错误代码:1005。无法创建表:详细分析
使用以下命令创建外键时遇到错误代码 1005以下脚本:
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 ;
登录后复制
了解其背后的根本原因至关重要错误。
错误消息“无法创建表 'ebs.#sql-f48_1a3' (errno: 150)”通常表示主键引用存在问题。要解决此问题,至关重要的是确保:
-
关键字段的数据类型和大小相同:
确保类型和大小完全匹配。例如,INT(10) 和 BIGINT 不兼容。同样,SIGNED 和 UNSIGNED 字段也应相应匹配。
-
相关字段具有适当的索引:
外键关系需要引用字段上的索引或主键。如果引用的字段缺少索引,请创建一个索引来建立约束。
-
外键名称是唯一的:
重复的外键名称可能会导致错误。通过在其末尾添加随机字符来验证外键名称在数据库中是否唯一。
-
表是 InnoDB 类型:
外键约束要求涉及的两个表都是 InnoDB表。 MyISAM 表不支持外键。
-
级联选项和字段可为空性兼容:
如果 ON DELETE 或 ON UPDATE 操作设置为 CASCADE,则引用的字段不能有 NOT NULL 约束。
-
字符集和排序规则选项是一致:
确保表和关系中的键列的字符集和排序规则参数相同。
-
外键列上不存在默认值:
外键列不应定义默认值。
-
具有单独索引的复合键是必需:
如果引用字段是组合键的一部分,则它必须有自己的索引,与组合索引分开。
彻底检查列出的原因并解决任何差异应该可以解决错误代码 1005。有关更多详细信息,请参阅 MySQL 的有关错误号 1005: 无法创建表的文档。
以上是为什么我收到 MySQL 错误代码 1005:无法创建表?的详细内容。更多信息请关注PHP中文网其他相关文章!