错误代码:1005。无法创建表...(errno:150)
尝试在表 sira_no 和 metal_kod 之间创建外键约束,您遇到错误代码1005,表示由于errno而无法创建表150.
此错误是由于代码中的主键引用不正确而导致的。定义外键关系时,父表中引用的字段必须存在,且与外键字段的数据类型和大小匹配,并且有索引或者是主键。
故障排除步骤:
-
检查字段定义:确保 METAL_KODU 字段两个表中的 具有相同的数据类型和大小(例如,两者都应该是 VARCHAR(4),而不是 VARCHAR(5)),包括有符号或无符号属性。还要检查区分大小写。
-
创建索引:验证metal_kod表中引用的METAL_KODU字段是否有索引。没有索引,无法建立外键约束。
-
检查表类型:涉及关系的两个表都必须使用InnoDB存储引擎支持外键约束。
-
检查外键名称:确保您的外键名称 (METAL_KODU) 不与现有的外键名称重复key.
-
处理空值:如果父表中的 METAL_KODU 字段设置为 NOT NULL 并且您已在外键约束中指定 ON DELETE SET NULL,请更改列属性或级联行为。
-
字符集和排序规则:检查字符集和排序规则表和键列的设置均匹配。
-
删除默认值:如果您的外键列有默认值(例如 default=0),请将其删除。
-
检查复合键:如果 METAL_KODU 字段是父表中复合键的一部分,则为它创建一个单独的索引该字段支持外键约束。
-
查看语法:仔细检查 ALTER TABLE 语句并确保字段名称输入正确。
-
外键长度:确保您的外键名称不超过最大长度64
通过解决这些潜在问题,您可以解决错误代码 1005 并成功在 sira_no 和 metal_kod 表之间建立外键关系。
以上是为什么在创建外键约束时出现 MySQL 错误 1005 (errno: 150)?的详细内容。更多信息请关注PHP中文网其他相关文章!