【MySQL】外部キーの追加時のエラー1215に対処する方法


ここではMySQLで、外部キーの追加時のエラー1215に対処する方法を紹介しています。

外部キーの追加時のエラー1215に対処する方法

今回は次のようにtab1とtab2の2つのテーブルを作成して、tab1からtab2のdeptカラムに対して外部キーの追加をしてみました。

CREATE TABLE tab1(
 emp_id varChar(10)
 ,emp_name varChar(100)
 ,dept varChar(10) 
 ,age int
 );
CREATE TABLE tab2(
 dept varChar(10)
 ,dept_name varChar(100)
);

ALTER TABLE文を実行すると、エラー1215が発生しました。

mysql> ALTER TABLE tab1 ADD FOREIGN KEY fk_dept(dept) REFERENCES tab2(dept);
ERROR 1215 (HY000): Cannot add foreign key constraint

これはうっかりしていたのですが、参照先tab2のdeptテーブルが主キーになっていなかったのでエラーが発生していました

参照先tab2のdeptカラムを主キー(PRIMARY KEY)に変更して作成し直しました。

CREATE TABLE tab2(
 dept varChar(10) PRIMARY KEY
 ,dept_name varChar(100)
);

すると外部キーの作成も問題なく実行できました。

mysql> ALTER TABLE tab1 ADD FOREIGN KEY fk_dept(dept) REFERENCES tab2(dept);
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0