Импортировал недавно дамп в MySQL и обнаружил следующую ошибку:
ERROR 1062 (23000) at line 14096: Duplicate entry '????????' for key 'name'
Судя по знакам вопроса в ошибке, проблема была скорее в кодировке, посмотрел кодировку дампа через Notepad++, она была — UTF8.
Подключился к mysql, посмотрел кодировку базы:
mysql -u root SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = "database_name";
Кодировка базы была latin1, кстати у меня она установилась по умолчанию при создании базы.
Поэтому я удалил базу и создал указав кодировку:
DROP DATABASE database_name; CREATE DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci; exit
После этого выполнил импорт:
mysql database_name < database_name.sql;
Импорт прошел успешно, ошибок не отображалось.
В случае если кодировка базы и дампа совпадает, а вы действительно хотите записать повторяющиеся данные, то можно в дампе, в запросах с этими данными заменить INSERT INTO на INSERT IGNORE INTO, где находятся эти повторяющиеся данные можно понять по номеру строки в ошибке, например у меня «at line 14096».
Если необходимо импортировать дамп поверх существующей базы, то можно изменить INSERT INTO на REPLACE INTO.
Например из командной строки можно заменить все так:
replace 'INSERT INTO' 'REPLACE INTO' -- database_name.sql
Перед любыми действиями нужно создать резервную копию базы, а также знать зачем и что вы делаете.
Смотрите также мою статьи:
Импорт и экспорт MySQL баз данных
Популярные статьи о MySQL