私は私のバックエンドとしてMySQLデータベースを使用しています応用。私はデータベースで遊んでいました。私は何日か前に何か間違ったことをしました。そして、私はDBテーブルに外部キーを適用することができません。 私は2つのテーブルshoplocationとpizaorderdetailを持っています。 pizzaordrdetailでは、私はシャポップのIDを外部キーとして渡しています。そして、私は次のエラーが発生しています。テーブルには既にデータが含まれています。そして、以前はpizzaorderdetailで利用可能な外部キー制約がありましたが、何とか削除されました。このエラーを解決する方法を教えてください。
実行中: 他の机 order
.pizzaorderdetail
ADD INDEX FK_idx
(LocationID
ASC); 他の机 order
.pizzaorderdetail
ADD CONSTRAINT FK
外部キー (LocationID
) 参考文献 order
.location
(id
) NOアクションを削除する 更新は必要ありません。
操作が失敗しました:SQLスクリプトをデータベースに適用する際にエラーが発生しました。 エラー1452:子行を追加または更新できません:外部キー制約は失敗しますorder
.#sql-714_31
、CONSTRAINT FK
外部キー (LocationID
)参考文献 location
(id
)NO UP NO NOTIONにアクションを削除しないでください) SQL文: 他の机 order
.pizzaorderdetail
ADD CONSTRAINT FK
外部キー (LocationID
) 参考文献 order
.location
(id
) 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は、最後のインデックスを削除できないようにします 特定の参照制約を強制します。