【问题标题】:import sql dump with InnoDB engine使用 InnoDB 引擎导入 sql 转储
【发布时间】:2012-01-12 15:48:07
【问题描述】:

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

#1005 - 无法创建表 '.\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) 

【问题讨论】:

    标签: mysql innodb


    【解决方案1】:

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

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

    SET foreign_key_checks = 0;
    
    # IMPORT CODE GOES HERE
    
    SET foreign_key_checks = 1;
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-02
        • 2021-11-06
        • 2016-12-23
        • 2011-04-25
        • 1970-01-01
        • 1970-01-01
        • 2012-05-04
        相关资源
        最近更新 更多