作成: 更新:
[mysql] Cannot add foreign key constraint.
この記事は最終更新日から1年以上が経過しています。この記事は最終更新日から12か月以上が経過しています。
このエントリーは約2分で読めます。
ってでた
情報少なすぎだけど、ちょっと見ればすぐわかる
※けどやり方すぐ忘れる、なのでメモ
現象
テーブルxxx
とbase
↑を結合するためにbase.id
の外部キーとしてxxx.base_id
を登録しようとしたがエラー
解決
これを実行SHOW ENGINE INNODB STATUS
したらいっぱい出力出るけど
この項目見る
※文字コードとかで改行なかったりするから、見づらいので注意
------------------------
LATEST FOREIGN KEY ERROR
------------------------
2021-11-01 00:00:00 0x0x0x0x0x0x0x Error in foreign key constraint of table test_database_1/#sql-1_7:
FOREIGN KEY (`base_id`) REFERENCES `base` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE:
Cannot find an index in the referenced table where the referenced columns appear as the first columns,
or column types in the table and the referenced table do not match for constraint. Note that the internal storage type of ENUM and SET changed in tables created with >= InnoDB-4.1.12,
and such columns in old tables cannot be referenced by such columns in new tables. Please refer to http://dev.mysql.com/doc/refman/5.7/en/innodb-foreign-key-constraints.html for correct foreign key definition.
要は xxx.base_id
にインデックス貼ってなかったって話
貼り直したらOKだった
ちなみにindex貼ってるかどうかの確認は
show index from xxx;
でOK