一尘不染

MySQL:无法创建表(错误号:150)

all

我正在尝试导入 .sql 文件,但它在创建表时失败。

这是失败的查询:

CREATE TABLE `data` (
`id` int(10) unsigned NOT NULL,
`name` varchar(100) NOT NULL,
`value` varchar(15) NOT NULL,
UNIQUE KEY `id` (`id`,`name`),
CONSTRAINT `data_ibfk_1` FOREIGN KEY (`id`) REFERENCES `keywords` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我从同一个数据库中导出了 .sql,我删除了所有表,现在我尝试导入它,为什么会失败?

MySQL: 无法创建表 ‘./dbname/data.frm’ (errno: 150)


阅读 50

收藏
2022-09-06

共1个答案

一尘不染

来自MySQL - FOREIGN KEY Constraints
文档

如果您重新创建已删除的表,则它必须具有符合引用它的外键约束的定义。它必须具有正确的列名和类型,并且必须在引用的键上具有索引,如前所述。
如果不满足这些,MySQL 将返回错误 1005 并在错误消息中引用错误 150,这意味着没有正确形成外键约束。
同样,如果 ALTER
TABLE 由于错误 150 而失败,这意味着为更改的表形成的外键定义将不正确。

2022-09-06