首页 >数据库 >mysql教程 >为什么在创建外键约束时出现 MySQL 错误 1005 (errno: 150)?

为什么在创建外键约束时出现 MySQL 错误 1005 (errno: 150)?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-06 11:48:20572浏览

Why Am I Getting MySQL Error 1005 (errno: 150) When Creating a Foreign Key Constraint?

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

尝试在表 sira_no 和 metal_kod 之间创建外键约束,您遇到错误代码1005,表示由于errno而无法创建表150.

此错误是由于代码中的主键引用不正确而导致的。定义外键关系时,父表中引用的字段必须存在,且与外键字段的数据类型和大小匹配,并且有索引或者是主键。

故障排除步骤:

  1. 检查字段定义:确保 METAL_KODU 字段两个表中的 具有相同的数据类型和大小(例如,两者都应该是 VARCHAR(4),而不是 VARCHAR(5)),包括有符号或无符号属性。还要检查区分大小写。
  2. 创建索引:验证metal_kod表中引用的METAL_KODU字段是否有索引。没有索引,无法建立外键约束。
  3. 检查表类型:涉及关系的两个表都必须使用InnoDB存储引擎支持外键约束。
  4. 检查外键名称:确保您的外键名称 (METAL_KODU) 不与现有的外键名称重复key.
  5. 处理空值:如果父表中的 METAL_KODU 字段设置为 NOT NULL 并且您已在外键约束中指定 ON DELETE SET NULL,请更改列属性或级联行为。
  6. 字符集和排序规则:检查字符集和排序规则表和键列的设置均匹配。
  7. 删除默认值:如果您的外键列有默认值(例如 default=0),请将其删除。
  8. 检查复合键:如果 METAL_KODU 字段是父表中复合键的一部分,则为它创建一个单独的索引该字段支持外键约束。
  9. 查看语法:仔细检查 ALTER TABLE 语句并确保字段名称输入正确。
  10. 外键长度:确保您的外键名称不超过最大长度64

通过解决这些潜在问题,您可以解决错误代码 1005 并成功在 sira_no 和 metal_kod 表之间建立外键关系。

以上是为什么在创建外键约束时出现 MySQL 错误 1005 (errno: 150)?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn