読者です 読者をやめる 読者になる 読者になる

メンチカツ

ロースカツが好きです

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

MySQL

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

MySQLの応答: Cannot add foreign key constraint

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

わ、わからん。理由がわからん。

そこで、以下のエントリ

blog.cosmocleaner.info

を参考にさせていただきました。

rootで

mysql> SHOW ENGINE INNODB STATUS\G

をすると、

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

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

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

思うので、

  • 片側だけunsignedにチェックが入ってないか
  • tinyintとsmallintを繋げようとしていないか

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

ちなみに

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

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

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

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