/ / MY SQLの外部キー制約エラー - mysql

MY SQLの外部キー制約エラー - mysql

私は私のバックエンドとしてMySQLデータベースを使用しています応用。私はデータベースで遊んでいました。私は何日か前に何か間違ったことをしました。そして、私はDBテーブルに外部キーを適用することができません。 私は2つのテーブルshoplocationとpizaorderdetailを持っています。 pizzaordrdetailでは、私はシャポップのIDを外部キーとして渡しています。そして、私は次のエラーが発生しています。テーブルには既にデータが含まれています。そして、以前はpizzaorderdetailで利用可能な外部キー制約がありましたが、何とか削除されました。このエラーを解決する方法を教えてください。

実行中: 他の机 order.pizzaorderdetail ADD INDEX FK_idxLocationID ASC); 他の机 order.pizzaorderdetail ADD CONSTRAINT FK 外部キー (LocationID) 参考文献 order.locationid) NOアクションを削除する 更新は必要ありません。

操作が失敗しました:SQLスクリプトをデータベースに適用する際にエラーが発生しました。 エラー1452:子行を追加または更新できません:外部キー制約は失敗しますorder.#sql-714_31、CONSTRAINT FK 外部キー (LocationID)参考文献 locationid)NO UP NO NOTIONにアクションを削除しないでください) SQL文: 他の机 order.pizzaorderdetail ADD CONSTRAINT FK 外部キー (LocationID) 参考文献 order.locationid) NOアクションを削除する UP NO NOアクション

回答:

回答№1は0

あなたのFKがOKかどうかを確認する必要があります。私がこのメッセージを受け取ったとき、私は自分のFKを削除して解決しました。

マニュアルによると: https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html

最後のインデックスを削除しようとすると、InnoDBはこのエラーを報告します 特定の参照制約を強制することができます。

DMLステートメントで最適なパフォーマンスを得るには、InnoDBにはインデックスが必要です 外部キー列に存在するため、UPDATEおよびDELETE操作 親テーブルの対応する行が 子テーブルMySQLはそのようなインデックスを自動的に作成または削除します 必要に応じて、CREATE TABLE、CREATE INDEX、およびALTERの副作用として TABLEステートメント

インデックスを削除すると、InnoDBはインデックスは、 外部キー制約をチェックする。 ifを削除することもできます それを強制するのに使用できる別のインデックスがあります 制約。 InnoDBは、最後のインデックスを削除できないようにします 特定の参照制約を強制します。