wordpressでテーブルを生成するプラグインを作成する際、
既存のwp-usersテーブルの主キーカラム(ID)を参照する外部キーを設定しようとしたところ、以下のエラーが排出されました。
Can't create table wp-01
.hoge
(errno: 150 "Foreign key constraint is incorrectly formed") for query
wp-userテーブルのIDカラムに合わせて、参照元のカラムの型をbigint型にし、unsignedの記述を追記したらSQL文が通るようになりました。
以下、修正前と修正後です。
before_modify.php
$sql = CREATE TABLE hoge (
hoge_id int not null PRIMARY KEY AUTO_INCREMENT,
user_id int not null,
CONSTRAINT ga FOREIGN KEY (user_id) REFERENCES wp_users(ID)
);
modyfied.php
$sql = CREATE TABLE hoge (
hoge_id int not null PRIMARY KEY AUTO_INCREMENT,
user_id bigint unsigned not null,
CONSTRAINT ga FOREIGN KEY (user_id) REFERENCES wp_users(ID)
);