错误代码1005(错误:121)创build表时从一个转储恢复MySQL数据库

我有一个Linux prod机器和Win7 64位开发机器。 我的工作stream程包括在Linux机器上转储生产MySQL数据库,并将其恢复到Windows机器上的本地MySQL数据库(使用SQLyog)。 这工作很长时间。

以下一些麻烦,我格式化并重新安装我的Windows开发机器。 从那以后我无法恢复它的数据库。 我不断收到以下错误:

Query: CREATE TABLE `auth_group` ( `id` int(11) NOT NULL auto_increment, `name` varchar(80) collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci Error occured at:2010-06-26 17:16:14 Line no.:30 Error Code: 1005 - Can't create table 'ap_site.auth_group' (errno: 121) 

请注意,这是sql转储文件中的第一个create table语句。

MySQL社区服务器5.1.41和5.1.48以及SQLyog社区8.0.4和8.5.1都会出现此错误。 我真的不知道重新安装之前和之后的configuration有什么不同,为什么会有这种效果。

从SQL转储恢复是我需要继续做的事情,所以我需要一个永久性的修复,而不是一个量身定制的解决方法。

您收到的错误意味着:

 MySQL error code 121: Duplicate key on write or update 

您的密钥/约束名称在整个数据库中必须是唯一的。

要解决该问题,请为与现有密钥名称相同的密钥select不同的名称,或者重命名现有密钥。

在阅读关于这个错误的大量线程之后,主要讨论了外键在整个数据库中应该被唯一命名的限制,下面简单的解决scheme起作用:

删除数据库,重新创build它,然后再试一次:)