首页 >数据库 >mysql教程 >为什么导入 .sql 文件时 MySQL 出现'无法创建表 (errno: 150)”错误?

为什么导入 .sql 文件时 MySQL 出现'无法创建表 (errno: 150)”错误?

Linda Hamilton
Linda Hamilton原创
2025-01-20 02:22:09505浏览

Why Am I Getting a

MySQL 错误:“无法创建表 (errno: 150)” - 故障排除指南

问题:

创建表期间导入包含表定义的 SQL 文件失败,导致错误“Can't create table './dbname/data.frm' (errno: 150)。”

根本原因:

当表的重新创建与引用它的现有外键约束发生冲突时,会出现此错误,如 MySQL FOREIGN KEY Constraints 文档中所述。 重新创建的表必须在以下方面与原始表精确匹配:

  • 列名称和数据类型:精确对应至关重要。
  • 引用键上的索引: 涉及外键关系的列上的所有必要索引都必须存在。

解决方案:

要解决此问题,请仔细验证以下内容:

  • 列一致性: 确认 SQL 文件的表定义中的列名称和数据类型与外键约束引用的表中的列名称和数据类型相同。 即使很小的差异(例如不同的字符集)也可能触发此错误。
  • 索引完整性: 在涉及外键关系的列上重新创建任何索引。确保这些索引存在并且符合原表的索引规范。

确认这些方面后,请重试 SQL 导入。 如果问题仍然存在,请仔细检查 SQL 文件中的 CREATE TABLE 语句是否存在任何不一致之处。

以上是为什么导入 .sql 文件时 MySQL 出现'无法创建表 (errno: 150)”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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