3
3

More than 5 years have passed since last update.

Foreign key constraint is incorrectly formedのエラーが発生した時 in MySQL 備忘録

Last updated at Posted at 2018-11-01

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='チーム構成一覧';

実行結果とエラー内容

  • sql 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
原因
対処法
直し方
実行できない
方法

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3