1

Тема: ошибка #1062 - Duplicate entry '2-??' for key 2

Здравствуйте, у меня проблема, при импорте дампа бд через phpmyadmin вылезает такая ошибка
---------------------------------------------------------------------
Ошибка
SQL-запрос:

--
-- Дамп данных таблицы `b_forum_letter`
--
INSERT INTO `b_forum_letter` ( `ID` , `DICTIONARY_ID` , `LETTER` , `REPLACEMENT` )
VALUES ( 19, 2, 'а', 'АаAa' ) , ( 20, 2, 'б', 'БбBb' ) , ( 21, 2, 'в', 'ВвVv' ) , ( 22, 2, 'г', 'Гг' ) , ( 23, 2, 'д', 'ДдDd' ) , ( 24, 2, 'е', 'ЁёЕеEe' ) , ( 25, 2, 'ё', 'ЁёЕеEe, [Йй]+[Оо]+' ) , ( 26, 2, 'ж', 'ЖжGg' ) , ( 27, 2, 'з', 'ЗзZz3' ) , ( 28, 2, 'и', 'ИиIi' ) , ( 29, 2, 'й', 'ЙйИиYy' ) , ( 30, 2, 'к', 'КкKk' ) , ( 31, 2, 'л', 'ЛлLl' ) , ( 32, 2, 'м', 'МмMm' ) , ( 33, 2, 'н', 'НнNn' ) , ( 34, 2, 'о', 'ОоOo' ) , ( 35, 2, 'п', 'ПпPp' ) , ( 36, 2, 'р', 'РрPpRr' ) , ( 37, 2, 'с', 'СсCc' ) , ( 38, 2, 'т', 'ТтTt' ) , ( 39, 2, 'у', 'УуUu' ) , ( 40, 2, 'ф', 'ФфFf' ) , ( 41, 2, 'х', 'ХхXx' ) , ( 42, 2, 'ц', 'ЦцCc' ) , ( 43, 2, 'ч', 'Чч' ) , ( 44, 2, 'ш', 'Шш' ) , ( 45, 2, 'щ', 'Щщ' ) , ( 46, 2, 'ь', 'ЪъЬь"'',' ) , ( 47, 2, 'ы', 'Ыы' ) , ( 48, 2, 'ъ', 'ЪъЬь"''' ) , ( 49, 2, 'э', 'Ээ' ) , ( 50, 2, 'ю', 'Юю, [Йй]+[Оо]+' ) , ( 51, 2, 'я', 'Яя' ) , ( 52, 2, '%', '[Цц]+([Аа]+|[Оо]+), [Тт]([Ьь]|)[Сс][Яя]' ) , ( 53, 2, '^', ',ВвЗзСс,ВвЫы,ДдОо,ЗзАа,ИиЗзСс,НнАа,НнЕе,ОоТт,ПпЕеРр' ) , ( 54, 2, 'тся', '%' ) , ( 55, 2, 'ться', '%' ) ;



Ответ MySQL: 

#1062 - Duplicate entry '2-??' for key 2
----------------------------------------------------------
помогите пожалуйста разобраться...

2

Re: ошибка #1062 - Duplicate entry '2-??' for key 2

Dixa
Проверьте в какой кодировке находятся данные в  дампе. В текстовом редакторе (например Notepad++) будет отображено ANSI или UTF-8. В первом случае на странице импорта следует выбрать cp1251, во втором utf8.

Сопоставление БД, в которую осуществляется импорт, должна быть в той же кодировке, в которой будут данные. В дампе вы можете увидеть кодировку в запросе создания таблиц. Например DEFAULT CHARSET=utf8. Сопоставление БД должно устанавливаться либо при ее создании, либо на только что созданной, пустой БД на странице "Операции".

В случае если в запросах на создание таблиц вы увидите кодировку latin1 - значит потребуется замена на используемую кодировку.
Например: используемая кодировка cp1251 - значит во всем дампе следует заменить все latin1 (включая latin1_general_ci или подобные) на cp1251 (cp1251_general_ci).

3

Re: ошибка #1062 - Duplicate entry '2-??' for key 2

Сделал все так как сказал Hanut
1.в нотпаде  отображает в кодировке  АНСИ, на импорт поставил cp1251
2.DEFAULT CHARSET стоит cp1251, поставил на сравнение БД cp1251
при импорте майАдмин предлагает мне сохранить файл импорт.пхп
я его сохраняю, потом пробую снова импортировать и вылетает ошибка #1062
подскажите как мне правильно перенести БД, что я не так делаю?

4

Re: ошибка #1062 - Duplicate entry '2-??' for key 2

HOY сказал:

при импорте майАдмин предлагает мне сохранить файл импорт.пхп

Не понимаю что это значит.

Текст ошибки приводите полностью.

5 (изменено: bamond, 2011-08-22 17:20:14)

Re: ошибка #1062 - Duplicate entry '2-??' for key 2

не буду создавать новую тему, т.к. проблема схожая

Hanut сказал:

Dixa
Проверьте в какой кодировке находятся данные в  дампе. В текстовом редакторе (например Notepad++) будет отображено ANSI или UTF-8. В первом случае на странице импорта следует выбрать cp1251, во втором utf8.

Сопоставление БД, в которую осуществляется импорт, должна быть в той же кодировке, в которой будут данные. В дампе вы можете увидеть кодировку в запросе создания таблиц. Например DEFAULT CHARSET=utf8. Сопоставление БД должно устанавливаться либо при ее создании, либо на только что созданной, пустой БД на странице "Операции".

В случае если в запросах на создание таблиц вы увидите кодировку latin1 - значит потребуется замена на используемую кодировку.
Например: используемая кодировка cp1251 - значит во всем дампе следует заменить все latin1 (включая latin1_general_ci или подобные) на cp1251 (cp1251_general_ci).

сделал все так же при импорте БД форума, но после импорта на странице не видно русских букв, вместо них знаки вопроса. если переключиться на английскую версию и залогиниться, то сообщения которые оставляли на форуме тоже не отображаются нормально.
в чем может быть проблема? все это делаю на WAMP Server
то же самое проделал на денвере - все в порядке, на вампе не хочет, но нужно именно на нем

кодировка файла .sql - ANSI
БД при экспорте - utf8_general_ci (в первых строчках бд это прописано)

создаю таблицу пустую в utf8
импорт делаю в cp1251 (пробовал в utf8 тоже - никак)

6

Re: ошибка #1062 - Duplicate entry '2-??' for key 2

bamond сказал:

кодировка файла .sql - ANSI
БД при экспорте - utf8_general_ci (в первых строчках бд это прописано)
создаю таблицу пустую в utf8
импорт делаю в cp1251 (пробовал в utf8 тоже - никак)

В phpMyAdmin посмотрите как выглядит кириллица и какая указана кодировка таблиц. Если кириллица читаема, то найдите конфигурационный файл MySQL (my.ini или my.cnf) и пропишите в разделе [mysqld] строку:

init-connect="SET NAMES cp1251"

Где cp1251 - это кодировка страниц сайта. В случае с кодировкой utf8 пропишите SET NAMES utf8.

7 (изменено: bamond, 2011-08-22 18:16:23)

Re: ошибка #1062 - Duplicate entry '2-??' for key 2

спасибо за быстрый ответ

Hanut сказал:

В phpMyAdmin посмотрите как выглядит кириллица

таблицу создал - utf8_general_ci
при импорте - cp1251
в этом случае кириллица в таблице не отображается (каракули), и при заходе на страницу форума тоже полная страница каракулей на белом экране

таблицу создал - utf8_general_ci
при импорте указал - utf8
кириллица в таблицах отображается корректно, при заходе на форум вместо букв вопросительные знаки

и какая указана кодировка таблиц.


не совсем понимаю где это смотреть. если в "Операции" - то там стоит "Сравнение: utf8-general_ci" у самой БД и у таблиц (в обоих случаях)

Если кириллица читаема, то найдите конфигурационный файл MySQL (my.ini или my.cnf) и пропишите в разделе [mysqld] строку:

init-connect="SET NAMES cp1251"

Где cp1251 - это кодировка страниц сайта. В случае с кодировкой utf8 пропишите SET NAMES utf8.

это пробовал делать тоже, до Вашей подсказки, не сработало, либо я не так писал. вычитал в гугле что перед такими строчками надо писать loose- (пример: loose-default-character-set) иначе на работает.
после того как прописал эту строчку надо заново импорт делать?

проблема остается не решенной. версия mysql 5.5.8

upd:
у денвера в конфиге mysql есть следующее

[client]
default-character-set = cp1251
character-sets-dir    = /usr/local/mysql-5.1/share/charsets

[mysqld]
init-connect = "set names cp1251"
skip-character-set-client-handshake

8

Re: ошибка #1062 - Duplicate entry '2-??' for key 2

bamond сказал:

не совсем понимаю где это смотреть. если в "Операции" - то там стоит "Сравнение: utf8-general_ci" у самой БД и у таблиц (в обоих случаях)

Верно. Это хорошо.

Пропишите строку:
init-connect="SET NAMES cp1251"
И создайте для форума отдельного пользователя назначив ему привилегии только на базу данных форума, при этом не назначайте привилегий из раздела "Администрирование". Это должно решить проблему.

9

Re: ошибка #1062 - Duplicate entry '2-??' for key 2

Hanut сказал:
bamond сказал:

не совсем понимаю где это смотреть. если в "Операции" - то там стоит "Сравнение: utf8-general_ci" у самой БД и у таблиц (в обоих случаях)

Верно. Это хорошо.

Пропишите строку:
init-connect="SET NAMES cp1251"
И создайте для форума отдельного пользователя назначив ему привилегии только на базу данных форума, при этом не назначайте привилегий из раздела "Администрирование". Это должно решить проблему.

огромное Вам спасибо smile
все буквы на месте, кириллица на форуме отображается корректно