塩焼きブログ

塩焼きに関しての研究内容を公開しています

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`)
);

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