错误代码:1005。无法创建表“…”(错误号:150)

错误代码:1005。无法创建表“…”(错误号:150),第1张

错误代码:1005。无法创建表“…”(错误号:150)

错误代码: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. 确保在表级别以及键列的各个字段级别,“字符集”和“排序规则”选项都相同。
  7. 您的外键列上有一个默认值(即default = 0)
  8. 关系中的字段之一是组合键(复合键)的一部分,没有单独的索引。即使字段将索引作为组合键的一部分,您也必须仅为该键字段创建一个单独的索引,以便在约束中使用它。
  9. 您的
    ALTER
    语句中有语法错误,或者在关系中输入了错误的字段名称之一
  10. 您的外键名称超过了64个字符的最大长度。

有关更多详细信息,请参阅: MySQL错误号1005无法创建表



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5018091.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存