ここでは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