MySQL 创建 Table 语句奇怪错误

MySQL Create Table Statement Strange Errors

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

当我创建 table Manuf 时它 运行 没问题,但是当我尝试创建下一个 table 订单时,使用相同的语法,它不起作用。

此外,当我尝试创建此 table 项时,我得到一个错误号:150。我相信这与我的外键创建有关,但我不确定。这是它的截图。

我对使用 MySQL 还很陌生,所以非常感谢任何建议,谢谢。

Order table 上的错误是由于 ORDER 是保留字造成的。您可以使用反引号将其指定为 `Order`,但最好完全选择不同的名称。

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

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

首先,检查这些键是如何在源 table 中定义的。例如:

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

兼容。我认为即使是不同的排序规则也足以让 FK 失去平衡(但我还没有检查过。其余的我确定,来自我个人的痛苦 un 经验)。

UPDATE:我忘了说,如果你使用 InnoDB tables 并发出 SHOW ENGINE INNODB STATUS,出来的广告会包含很多更好地解释 FK 失败的原因,距顶部约三分之一。