У меня есть машина Linux prod и машина разработчика Win7 64bit. Мой рабочий процесс включает сброс производственной базы данных MySQL на машину Linux и восстановление ее в моей локальной базе данных MySQL на машине Windows (с использованием 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.
Эта ошибка возникает как в MySQL Community Server 5.1.41 и 5.1.48, так и в SQLyog Community 8.0.4 и 8.5.1. Я действительно не знаю, что изменилось в моей конфигурации от до переустановки и сейчас, и почему это дает такой эффект.
Восстановление из дампа sql - это то, что мне нужно делать, поэтому мне нужно постоянное исправление, а не индивидуальный обходной путь.
Полученная вами ошибка означает:
MySQL error code 121: Duplicate key on write or update
Имена ваших ключей / ограничений должны быть уникальными для всей базы данных.
Чтобы решить эту проблему, выберите другое имя для ключа, которое имеет то же имя, что и существующий ключ, или переименуйте существующий ключ.
После прочтения лоты Для обсуждения этой ошибки, в основном из-за ограничения, что внешние ключи должны иметь однозначное имя во всей базе данных, работало следующее простое решение:
Отбросьте db, воссоздайте его и попробуйте еще раз :)