» » » Ошибка 1062 при импорте базы данных

Ошибка 1062 при импорте базы данных

На днях я переносил один из своих сайтов на новый хостинг и столкнулся с проблемой. Подробно о том, как перенести сайт на другой хостинг я расскажу в одной из следующих статей, а пока расскажу о самой проблеме и ее решении.

Файлы сайта я скопировал быстро, сделал экспорт базы данных со старого хостинга, но при попытке импортировать таблицы в базу на новом хостинге возникла ошибка в My SQL вот такого вида:

Ошибка

SQL-запрос:

— — Дамп данных таблицы `rich_blc_instances` — INSERT INTO `rich_blc_instances` (`instance_id`, `link_id`, `container_id`, `container_type`, `link_text`, `parser_type`, `container_field`, `link_context`, `raw_url`) VALUES (1, 1, 1, ‘blogroll’, ‘Документация’, ‘url_field’, ‘link_url’, ”, ‘http://codex.wordpress.org/Заглавная_страница’), (2, 2, 2, ‘blogroll’, ‘Блог WordPress’, ‘url_field’, ‘link_url’, ”, ‘http://wordpress.org/news/’), (3, 3, 3, ‘blogroll’, ‘Форумы поддержки’, ‘url_field’, ‘link_url’, ”, ‘http://ru.forums.wordpress.org/’), (4, 4, 4, ‘blogroll’, ‘Плагины’, ‘url_field’, ‘link_url’, ”, ‘http://wordpress.org/extend/plugins/’), (5, 5, 5, ‘blogroll’, ‘Темы’, ‘url_field’, ‘link_url’, ”, ‘http://wordpress.org/extend/themes/’), (6, 6, 6, ‘blogroll’, ‘Обратная связь’, ‘url_field’, ‘link_url’, ”, ‘http://ru.forums.wordpress.org/forum/20’), (7, 7, 7, ‘blogroll’, ‘Планета WordPr[…]

Ответ MySQL:

#1062 – Duplicate entry ‘1’ for key ‘PRIMARY’

Так как в базах данных я полный чайник, пришлось копаться в интернете в поисках решения. На форумах довольно много записей от людей с подобной проблемой, но нигде нет четкого ответа – сделай вот так и так.

В общих чертах я проблему понял, но вот как ее решить было неясно. На всех форумах, где встречалось описание подобной ошибки, люди писали, что она возникает при попытке добавить записи из одной базы данных в уже существующую другую.

Но я импортировал базу данных в пустые таблицы, более того, таблицы создавались в процессе импорта.

Решил проблему с ошибкой «#1062 – Duplicate entry ‘1’ for key ‘PRIMARY’» следующим образом:

Заменил в таблицах базы данных команду INSERT INTO на REPLACE INTO. В тексте ошибки, который я привел выше вы можете посмотреть в каком месте таблицы располагаются эти слова (выделил жирным).

По умолчанию, с помощью директивы insert база пыталась вставить значения в таблицу, но почему-то, находила дублированный key ‘PRIMARY’ и не могла вставить данные (как она их находила, я так и не разобрался). Директива replace заставила базу заменять данные при совпадении значений, не обращая внимания на прошлые записи.

Заменить эту директиву можно открыв сам файл базы данных с помощью текстового редактора – эта команда стоит перед блоком каждой таблицы. Открываете базу данных в текстовом редакторе, например, Akelpad и меняете все команды INSERT INTO на REPLACE INTO.

В моем же случае, получилось сделать проще – я по новой сделал экспорт таблицы на старом хостинге и в настройках экспорта установил этот самый REPLACE вместо INSERT.

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(25 голосов, в среднем: 5 из 5)

35 комментариев на «“Ошибка 1062 при импорте базы данных”»

  1. Роберт:

    Опечатка: INCERT вместо INSERT.

    Ответить
  2. Андрей:

    Спасибо, помогло )

    Ответить
  3. fedia:

    Здраствуйте! У меня я не пойму где я могу поменять дерективы или хотябы увидеть где они настроены?

    Ответить
    • Дмитрий Жилин:

      Здравствуйте. Откройте базу данных в текстовом редакторе и там найдете все директивы.

      Ответить
  4. Эрлан Калыбеков:

    Спасибо вам очень помогли!!!

    Ответить
  5. Sarge:

    Thx man, helps out a lot. I mean a LOT 🙂

    Ответить
  6. Ультиматум:

    Спасибище! С Вашей помощью удалось обмануть это чудовище!!!

    Ответить
  7. ks:

    мучалась неделю – спасибо Вам огромное – наконец-то работает!

    Ответить
  8. Игорь:

    Спасибо большое. Всё получилось.

    Исправьте ошибку в статье: вместо INCERT, нужно INSERT

    Ответить
  9. kumo:

    спас, думую, то что нужно, иду пробовать. Извини, врядли я тебя ещё найду.
    Класс и спас тебе.Ок?

    Ответить
  10. Владимир:

    за статью спасибо. Вот хотел подписаться по почте, но при активации поля перебрасывает на канал Ютуб. Это ваша оплошность или же такой оригинальный метод привлечения людей на видео хостинг?

    Ответить
    • Дмитрий Жилин:

      На днях менял этот блок и недосмотрел закрывающую скобку. Спасибо, что обратили внимание и подсказали. Сейчас форма подписки работает.

      Ответить
  11. ОлеДжи:

    Благодарю , друг! Ты выручил меня!

    Ответить
  12. Olga:

    Огромное спасибо!!!! А то уже и не знала, что делать!!!!

    Ответить
  13. Rus:

    Сделал по новой экспорт, изменив insert на replace, теперь при импорте велезла другая ошибка:
    ________________________________________________________________
    Ошибка
    SQL-запрос:


    — Indexes for dumped tables


    — Indexes for table `wp_commentmeta`

    ALTER TABLE `wp_commentmeta` ADD PRIMARY KEY ( `meta_id` ) ,
    ADD KEY `comment_id` ( `comment_id` ) ,
    ADD KEY `meta_key` ( `meta_key` ( 191 ) ) ;

    Ответ MySQL: Документация

    #1068 – Multiple primary key defined
    ______________________________________________________________
    И что теперь с этим делать, может подскажете?

    Ответить
    • Дмитрий Жилин:

      Я, к сожалению, не смогу помочь, так как мои познания в этих базах находятся на уровне “научного тыка” – нужен подопытный сайт, Яндекс и масса времени.
      Ошибку, описанную в статье я так и лечил.

      Ответить
  14. Inna:

    Сделал по новой экспорт, изменив insert на replace, теперь при импорте велезла другая ошибка
    Старую базу удалили на хосте? Удаляете старую, ставите новую. Прошло как по маслу. Месяц делала сайт и вылезла такая гадость. Спасли. Спасибо.)

    Ответить
  15. timoramb:

    Спасибо, помогло!

    Ответить
  16. sky3333:

    Спасибо, добрый человек! Помогло!

    Ответить
  17. Саша:

    Спасибо Вам большое! Очень помогло!..

    Ответить
  18. Даниил:

    Спасибо за информацию!

    Ответить
  19. Евгений:

    очень помог спасибо тебе.

    Ответить
  20. Ильяс:

    Спасибо большое, решение помогло 🙂

    Ответить
  21. Анна:

    Спасибо. Проблема решена.

    Ответить
  22. Викс:

    Мне удалось решить эту проблему по другому. Я зашла в phpmyadmin и в таблице присвоила для id в “Дополнительно” значение “AUTO_INCREMENT” (поставила галочку в колонке A_I). После этого ошибка пропала. Причина была в том, что первая запись в таблице имела id = 1, а когда импортировала БД, то AUTO_INCREMENT не передался. Когда стала добавлять новую запись, то ей присвоился сначала id = 0; когда следующую, то id = 1, который уже существовал и возник конфликт. Возможно мой метод кому-то пригодится.
    Метод замены с INTO на REPLACE возможно и устраняет ошибку, но может привести к полной замены старых данных на новые (особенно когда их много и все скрыто в чужом коде).

    Ответить
    • Всеволод:

      а можно подробнее как и куда зашли и где этот id находится

      Ответить
  23. Андрей:

    Спасибо! Открыл базу в notepad++ заменил все надписи(у меня их получилось 1188) и всё загрузилось без ошибки 🙂

    Ответить
  24. артемайзер:

    То что было нужно )) Большое спасибо!

    Ответить
  25. Владислав Артеменко:

    Спасибо! Помогли!

    Ответить
  26. Андрей:

    Help me, please!
    Перенес сайт на другой хостинг и сменил домен (причуда заказчика), предварительно скачал старую базу.
    Залил все на новый хостинг но при попытке импортировать старую базу получаю вот это:
    Ошибка
    SQL запрос:


    — Индексы сохранённых таблиц


    — Индексы таблицы `wp_commentmeta`

    ALTER TABLE `wp_commentmeta`
    ADD PRIMARY KEY (`meta_id`),
    ADD KEY `comment_id` (`comment_id`),
    ADD KEY `meta_key` (`meta_key`(191));
    Ответ MySQL: Документация
    #1068 – Multiple primary key defined
    Я в MySQL полный ламер, помогите пожалуйста, очень не хочется все по новой делать.
    Пиво гарантирую.

    Ответить
    • Дмитрий Жилин:

      По этому запросу через поиск смотрите по форумам: “1068 — Multiple primary key defined”, я не сталкивался, не помогу.

      Ответить
  27. Роман:

    Добрый день. суть вашей ошибки в логике MySQL при вставке новой записи в поле с первичным ключом (нет структуры таблицы) которое я думаю имеет тип INT по умолчанию записывается 0 и потому MySQL не допускает вторичного значения по ключевому полю.

    Ответить
  28. Андрей:

    Спасибо большое! Вопрос был решен!

    Ответить
  29. Алекс:

    Автор красава! У меня чуть в другом была проблема но Ответ MySQL: как у тебя, благодарю!

    Ответить
  30. kdijiyq:

    Спасибо за информацию!!!!!

    Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *