使用外键创建表时的MySQL错误号150

时间:2014-07-16 09:10:42

标签: mysql sql foreign-keys constraints

我在database创建新表时遇到问题。我已经看到它返回的错误代码与Foreign Key约束有关。

我检查过以确保新表格中data type的{​​{1}}与另一个表格中foreign key的{​​{1}}相匹配。它们都是data type

但是我仍然收到错误。我错过了什么吗?这是用于创建新表的primary key脚本:

int(11)

这是包含SQL

的原始表格
CREATE TABLE `regular_features` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(200) DEFAULT NULL,
  `day` VARCHAR(200) DEFAULT NULL,
  `description` TEXT DEFAULT NULL,
  `programme_id` INT(11) NOT NULL,
  PRIMARY KEY (`id`),
  FOREIGN KEY (`programme_id`) REFERENCES directoryprogramme(id) 
) ENGINE=INNODB DEFAULT CHARSET=utf8;

primary key将是CREATE TABLE `directoryprogramme` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(250) NOT NULL, `broadcast_time` VARCHAR(100) NOT NULL, `description` TEXT NOT NULL, `days` VARCHAR(150) NOT NULL, `contributors` VARCHAR(250) NOT NULL, `directorycompany_id` INT(11) NOT NULL, `directorycontact_id` VARCHAR(250) NOT NULL, `facebook_link` VARCHAR(250) DEFAULT NULL, `twitter_link` VARCHAR(250) DEFAULT NULL, `wikipedia_link` VARCHAR(250) DEFAULT NULL, `web` VARCHAR(250) DEFAULT NULL, `imageextension` VARCHAR(10) DEFAULT NULL, `type` VARCHAR(20) NOT NULL DEFAULT 'other', PRIMARY KEY (`id`) ) ENGINE=MYISAM AUTO_INCREMENT=1161 DEFAULT CHARSET=utf8;

Foreign Key

1 个答案:

答案 0 :(得分:1)

问题是你的create语句的最后一行:

ENGINE=INNODB DEFAULT CHARSET=utf8;

您将ald表中的MYISAM与新表中的INNODB混合。

这不起作用。

将新表格中的引擎更新为MYISAM,然后就可以了。