使用InnoDB引擎导入sql转储

时间:2012-01-12 15:48:07

标签: mysql innodb

当我使用InnoDB引擎导入sql dump时,我遇到了一些问题,例如:

#1005 - Can't create table '.\db_name\table_name.frm' (errno: 121) .

当它使用默认引擎时,它会成功运行。

我该如何解决这个问题?


谢谢大家,但没有任何重复/无效的外键,我也有变化 SET foreign_key_checks =“0”为“1”; 但没有好结果 这是我在phpMyAdmin中的错误代码

Error

SQL query:

CREATE TABLE `mb_comment` (
`content` text COLLATE utf8_unicode_ci,
`post_id` int( 11 ) default NULL ,
`user_id` varchar( 30 ) COLLATE utf8_unicode_ci default NULL ,
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
PRIMARY KEY ( `id` ) ,
KEY `FK_comment` ( `post_id` ) ,
KEY `FK_comment2` ( `user_id` ) ,
CONSTRAINT `FK_comment2` FOREIGN KEY ( `post_id` ) REFERENCES `mb_post` ( `id` ) ON DELETE CASCADE ON UPDATE CASCADE ,
CONSTRAINT `FK_comment` FOREIGN KEY ( `user_id` ) REFERENCES `mb_user` ( `id` ) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;

MySQL said: Documentation
#1005 - Can't create table '.\myblog_db\mb_comment.frm' (errno: 121) 

2 个答案:

答案 0 :(得分:2)

听起来像无效的外键约束,例如对不存在的记录或表的引用。

最好的办法是确保导入模式/表的完整转储,也可以通过禁用外键约束检查来尝试导入:

SET foreign_key_checks = 0;

# IMPORT CODE GOES HERE

SET foreign_key_checks = 1;

如果默认引擎是MyISAM,则外键将被忽略,因为它们不受支持。

答案 1 :(得分:0)

我认为这是因为外键的重复名称。其他引擎然后innodb没有外键引用完整性检查。