MySQL创建表语句奇怪的错误

时间:2016-11-19 23:30:01

标签: mysql create-table mysql-error-150

我正在尝试为我的数据库课程项目运行一些基本的CREATE TABLE语句,并且遇到了一些奇怪的错误。

enter image description here

当我创建表Manuf它运行正常,但是当我尝试创建下一个表时,Order,使用相同的语法,它不起作用。

另外,当我尝试创建这个表时,我得到一个错误:150。我相信这与我的外键创建有关,但我不完全确定。这是截图。

enter image description here

我对使用MySQL相当新,所以非常感谢任何建议,谢谢。

1 个答案:

答案 0 :(得分:1)

Order表上的错误是由ORDER作为保留字引起的。你可以用反引号将其指定为“Order”,但如果你选择一个不同的名字,它会更好。

错误150与外键有关。键必须绝对相同 - 完全相同的定义,否则FK将因错误150而失败。

此外,必须有一个具有该键定义的可用索引或一个兼容的索引(参见Kai the comment on the MySQL manual page中的例子)。以不同顺序索引的相同字段将失败。

首先,检查在原始表中如何定义这些键。例如:

 test1  varchar(50) not null
 test2  varchar(50)

兼容。我认为即使是一个不同的校对也足以让FK失败(但我还没有检查过。其余的我确信,从我个人痛苦的 un 体验)。

更新:我忘了提及,如果你使用InnoDB表并发出SHOW ENGINE INNODB STATUS,那么出来的模糊将更好地解释FK失败的原因,某处是三分之一。