MySQLでFOREIGN KEYを張る際に形式が正しくないと怒られた時の対策

下記のようなSQLを実行したところ

CREATE TABLE `a` (
`id` SMALLINT(6) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
);
CREATE TABLE `b` (
`id` SMALLINT(6) NOT NULL AUTO_INCREMENT,
`a_id` INT(11) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`a_id`) REFERENCES `a` (`id`)
);

このようなエラーが発生した

ERROR 1005 (HY000) at line 30: Can't create table `schemaspy_tmp`.`b` (errno: 150 "Foreign key constraint is incorrectly formed")

これは外部キー制約で指定した元の型と先の型に差異があるために発生しているので統一してあげる

CREATE TABLE `a` (
`id` SMALLINT(6) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
);
CREATE TABLE `b` (
`id` SMALLINT(6) NOT NULL AUTO_INCREMENT,
`a_id` SMALLINT(6) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`a_id`) REFERENCES `a` (`id`)
);

何年も動いているカオスシステムではこういうことが起きるのである

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA