メンチカツ

ロースカツが好きです

MySQLで外部キーを追加しようとしたら「Cannot add foreign key constraint」と怒られた

Sequel Proで外部キーを追加してたら怒られた。

MySQLの応答: Cannot add foreign key constraint

f:id:easy-breezy:20170203161622p:plain

こういうときはrootで

mysql> SHOW ENGINE INNODB STATUS\G

をすると、

------------------------
LATEST FOREIGN KEY ERROR
------------------------

という箇所があるので、そこを確認するとエラーの詳細を見ることができます。

まあ、繋げようとしているカラムの形が微妙に違っているのがほとんどだと

思うので、

  • idの片側だけunsignedじゃないか
  • tinyintとsmallintを繋げようとしていないか

とかを確認すれば、大抵は解決できるんじゃないかな?と思います。

ちなみに

データが入った状態で外部キーをつけようとすると、以下のエラーが出ることがあります。

Cannot add or update a child row: a foreign key constraint fail

これは、今あるデータの整合性が取れてないので(参照先に存在しないIDがある等)

適宜修正をしてあげましょう。