我正在尝试导入 .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)
来自MySQL - FOREIGN KEY Constraints 文档:
如果您重新创建已删除的表,则它必须具有符合引用它的外键约束的定义。它必须具有正确的列名和类型,并且必须在引用的键上具有索引,如前所述。 如果不满足这些,MySQL 将返回错误 1005 并在错误消息中引用错误 150,这意味着没有正确形成外键约束。 同样,如果 ALTER TABLE 由于错误 150 而失败,这意味着为更改的表形成的外键定义将不正确。