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 失败的原因,距顶部约三分之一。
我正在尝试 运行 为我的数据库课程项目创建一些基本的 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 失败的原因,距顶部约三分之一。