mysql创建表显示1005_mysql – 错误代码:1005.无法创建表’…'(errno:150)

错误代码:1005 – 您的代码中存在错误的主键引用

通常它是由于引用FK字段不存在。可能是你有打字错误,或检查它应该是相同的,或有一个字段类型不匹配。 FK链接的字段必须完全匹配定义。

一些已知的原因可能是:

>两个关键字段类型和/或大小不完全匹配。例如,如果一个是INT(10),键字段也需要是INT(10),而不是INT(11)或TINYINT。您可能需要使用SHOW CREATE TABLE确认字段大小,因为查询浏览器有时在视觉上只显示INT(10)和INT(11)的INTEGER。您还应该检查一个不是SIGNED,另一个是UNSIGNED。他们都需要完全相同。

>您尝试引用的键字段之一没有索引和/或不是主键。如果关系中的某个字段不是主键,则必须为该字段创建索引。

>外键名称是已存在键的副本。检查外键的名称在数据库中是否是唯一的。只需在密钥名称的末尾添加一些随机字符即可测试。

>一个或两个表是MyISAM表。为了使用外键,表必须都是InnoDB。 (实际上,如果两个表都是MyISAM,那么您不会收到错误消息 – 它只是不会创建密钥。)在查询浏览器中,您可以指定表类型。

>您已指定级联ON DELETE SET NULL,但相关键字段设置为NOT NULL。您可以通过更改级联或将字段设置为允许NULL值来解决此问题。

>确保字符集和整理选项在表级别以及键列的单个字段级别相同。

>您的外键列上有一个默认值(即default = 0)

>关系中的一个字段是组合(复合)键的一部分,并且没有它自己的单独索引。即使该字段具有作为组合键一部分的索引,您必须为该键字段创建一个单独的索引,以便在约束中使用它。

>您的ALTER语句中有语法错误,或者您键入了关系中的一个字段名称

>您的外键的名称超过了64个字符的最大长度。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值