我正在尝试为我的数据库课程项目运行一些基本的CREATE TABLE语句,并且遇到了一些奇怪的错误。
当我创建表Manuf它运行正常,但是当我尝试创建下一个表时,Order,使用相同的语法,它不起作用。
另外,当我尝试创建这个表时,我得到一个错误:150。我相信这与我的外键创建有关,但我不完全确定。这是截图。
我对使用MySQL相当新,所以非常感谢任何建议,谢谢。
答案 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失败的原因,某处是三分之一。