为了账号安全,请及时绑定邮箱和手机立即绑定

错误代码:1005。无法创建表'...'(错误号:150)

错误代码:1005。无法创建表'...'(错误号:150)

慕斯王 2019-09-20 16:52:21
我在Internet上搜索了这个问题的解决方案,并检查了Stack Overflow问题,但没有一个解决方案适合我的情况。我想从表sira_no到metal_kod创建一个外键。ALTER TABLE sira_no    ADD CONSTRAINT METAL_KODU FOREIGN KEY(METAL_KODU)    REFERENCES metal_kod(METAL_KODU)    ON DELETE SET NULL    ON UPDATE SET NULL ;该脚本返回:Error Code: 1005. Can't create table 'ebs.#sql-f48_1a3' (errno: 150)我尝试在引用的表中添加索引:CREATE INDEX METAL_KODU_INDEX ON metal_kod (METAL_KODU);我在两个表(charset和collation)上检查了METAL_KODU,但我找不到解决这个问题的方法。我该如何解决这个问题?这是metal_kod表:METAL_KODU    varchar(4)    NO    PRIDURUM    bit(1)    NOMETAL_ISMI    varchar(30)    NOAYAR_YOGUNLUK    smallint(6)    YES        100
查看完整描述

3 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

错误代码:1005 - 代码中的主键引用错误

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

一些已知的原因可能是:

  1. 两个关键字段类型和/或大小不完全匹配。例如,如果一个是INT(10)关键字段需要INT(10)也是,而不是INT(11)TINYINT。您可能需要确认字段大小,SHOW CREATE TABLE因为查询浏览器有时会直观地显示INTEGER两者INT(10)INT(11)。你还应该检查一个不是SIGNED,另一个是UNSIGNED。它们都需要完全相同。

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

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

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

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

  6. 确保Charset和Collate选项在表级别以及关键列的单个字段级别都相同。

  7. 外键列上有一个默认值(即默认值= 0)

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

  9. 您的ALTER语句中存在语法错误,或者您在关系中输入了一个字段名称

  10. 外键的名称超过64个字符的最大长度。


查看完整回答
反对 回复 2019-09-20
?
弑天下

TA贡献1818条经验 获得超8个赞

将数据库从一个服务器导出到另一个服务器时,也可能发生这种情况,默认情况下,这些表按字母顺序列出。

因此,您的第一个表可能具有另一个尚未创建的表的外键。在这种情况下,请禁用foreign_key_checks并创建数据库。


只需将以下内容添加到脚本中:


SET FOREIGN_KEY_CHECKS=0;

它应该工作。


查看完整回答
反对 回复 2019-09-20
?
阿晨1998

TA贡献2037条经验 获得超6个赞

有时它是由于主表被删除(可能是通过禁用foreign_key_checks),但外键CONSTRAINT仍然存在于其他表中。在我的情况下,我放弃了桌子并尝试重新创建它,但它给我带来了同样的错误。

因此,尝试从所有表中删除所有外键CONSTRAINT(如果有),然后更新或创建表。


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 840 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信