ホームページ >データベース >mysql チュートリアル >MySQL InnoDB で「ALTER IGNORE TABLE」を実行しても「整合性制約違反」エラーが発生するのはなぜですか?
MySQL: ALTER IGNORE TABLE 中の「整合性制約違反」エラーを解決する
MySQL で ALTER IGNORE TABLE ステートメントを使用して重複を削除し、一意のインデックスを作成すると、「整合性制約違反」エラーが発生する可能性があります。この問題は、IGNORE キーワードでそのようなエラーを防ぐ必要があると MySQL ドキュメントに示されているにもかかわらず発生します。
この問題は、特定のバージョンの MySQL の InnoDB バージョン内のバグにあるようです。 IGNORE 拡張機能は InnoDB での機能が制限されているため、使用にもかかわらず重複キー エラーが継続します。
この問題を解決するには、次の代替アプローチを検討してください。
コマンドを使用してテーブルを MyISAM ストレージ エンジンにコピーします:
ALTER TABLE table ENGINE MyISAM;
Run ALTER IGNORE TABLE ステートメントを使用して一意のインデックスを作成します:
ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field);
コマンドを使用してテーブルを InnoDB に再変換します:
ALTER TABLE table ENGINE InnoDB;
テーブルに外部キー制約がある場合、この方法は機能しない可能性があることに注意してください。このような場合、これらの制約を一時的に削除し、インデックスの作成が完了した後に再度追加する必要があります。
以上がMySQL InnoDB で「ALTER IGNORE TABLE」を実行しても「整合性制約違反」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。