MySQL创建表语句奇怪的错误
问题描述:
我想为我的数据库课程项目运行一些基本的CREATE TABLE语句,并得到一些奇怪的错误。MySQL创建表语句奇怪的错误
当我创建表MANUF它运行良好,但是当我尝试创建一个表,订购,使用相同的语法,这是行不通的。另外,当我尝试创建这个表时,我得到一个errno:150.我相信这与我的外键创建有关,但我并不确定。这是一个截图。
我是相当新的使用MySQL,因此任何建议将不胜感激,谢谢。
答
Order
表上的错误是由ORDER作为保留字引起的。您可以使用反引号将其指定为“Order”,但如果您完全选择其他名称,则会更好。
错误150与外键有关。该密钥必须绝对相同 - 确切的定义相同,或FK将错误失败150
而且,必须有与该键定义一个可用的索引或一个兼容的(见启巴库在the comment on the MySQL manual page例子) 。以不同顺序索引的相同字段将失败。
首先,检查这些密钥在原始表中的定义方式。例如:
test1 varchar(50) not null
test2 varchar(50)
将不兼容。我认为即使是不同的排序规则也足以将FK击倒(但我没有检查过,其余的我确信,从我个人的经历中可以看出来)。
更新:我忘了提,如果使用InnoDB表,并发出SHOW ENGINE INNODB STATUS
,散发出来的导语包含的为什么FK失败的一个更好的解释,地方从上大约三分之一。
@LSerni谢谢,解决了这个问题哈哈。然而,不确定关于errno 150。 – Biggytiny
请勿使用图片发布文字内容。您可以从命令窗口复制并粘贴文本。文字阅读起来要容易得多,而不必要的图像使得使用移动设备的读者很难。在尝试帮助查找解决方案时,您也无法从图像中复制文本。还有更多理由避免使用图像;你可以看到他们的列表[在这篇文章中](http://meta.stackoverflow.com/a/285557/62576)。只有在没有其他方式证明问题时才应该使用图像,这当然不是这种情况。谢谢。 –