Foreign key constraint is incorrectly formedのエラーが発生した時 in MySQL
エラー内容
Error Code: 1005. Can't create table `test_f`.`product_menbers` (errno: 150 "Foreign key constraint is incorrectly formed") 0.078 sec
原因
このエラーが起こる大抵の場合は、外部キーの参照先がユニークなカラムでない場合に起こります
どこを参照しようとしているのかテーブルの構造を舐め回す様にチェックすれば良いでしょう
その他の原因としては異なるデータベースエンジンを使用してる場合に起こる場合もあります
外部キーとは他のテーブルの行をユニークに特定する為のものです
参照先のテーブルのカラムが本当にユニーク(重複が発生しない)カラムであるか確認して下さい
ユニークであるか確認する方法
例えば下記のテーブルでは「id」と「name」はそれぞれユニークなカラムだと言えます
CREATE TABLE IF NOT EXISTS (
id INT AUTO_INCREMENT,
name VARCHAR(30) UNIQUE,
PRIMARY KEY (id)
)DEFAULT CHARSET=utf8mb4;
id
は 主キーですので自動でユニークキー制約が付きます。なのでユニークだと言えます
name
はユニークキー制約が指定されていますのでユニークだと言えます。
- 既に作られたテーブルの構造を確認したい場合は下記のSQLで確認できます
SHOW CREATE TABLE db_name.table_name;
note
以下は備忘録です
実行しようとしたSQL
CREATE TABLE IF NOT EXISTS `product_menbers` (
`id` INT NOT NULL AUTO_INCREMENT,
`product_id` SMALLINT NOT NULL COMMENT '作品番号',
`student_id` SMALLINT NOT NULL COMMENT '学生ID',
`leader_flg` BOOLEAN,
CONSTRAINT `product_menbers_to_product_id` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`),
CONSTRAINT `product_menbers_to_student_id` FOREIGN KEY (`student_id`) REFERENCES `students` (`student_id`) ON UPDATE CASCADE ON DELETE CASCADE
)DEFAULT CHARSET=utf8mb4 COMMENT='チーム構成一覧';
実行結果とエラー内容
Error Code: 1005. Can't create table `test_f`.`product_menbers` (errno: 150 "Foreign key constraint is incorrectly formed") 0.078 sec
env
検証環境
windows 10
xampp v3.2.2
mysql 8.0
mysql workbench 8.0.13
tag
mysql
error
エラー
Error Code: 1005
エラー 1005
原因
対処法
直し方
実行できない
方法