1062 duplicate entry 1 for key primary

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

Файлы сайта я скопировал быстро, сделал экспорт базы данных со старого хостинга, но при попытке импортировать таблицы в базу на новом хостинге возникла ошибка в My 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[…]

#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.

Ошибка вида #1062 — Duplicate entry ‘1’ for key ‘PRIMARY’, может возникать при переносе на другой хостинг, у меня возникла, когда я переносил сайт на oscommerse. будем решать ее в этой статье.

Duplicate entry ‘1’ for key ‘PRIMARY’ — то есть вы пытаетесь создать то, что уже создано(в phpmyadmin). Обычно такая ошибка возникает, когда вы поверх уже установленной базы (БД) движка, пытаетесь сверху накинуть примерно такую же базу, но таблицы к примеру уже такие были созданы и поэтому вылазит такая ошибка.

Открываем файл БД в программе notepad++ и меняем INSERT INTO на REPLACE INTO. Теперь мы не будем создавать то, что уже есть, а будем перезаписывать. Теперь заливаем еще раз эту БД и ошибка должна исчезнуть.

Более старые статьи:

  • Сегодня разберем популярные вопросы по oscommerse. для многих этот движок как тихий омут. давайте прояснять ситуацию. …

«>Популярные вопросы по oscommerse
При переносе сайта на oscommerse могут возникнуть незначительные, но ошибки типа Warning.

I have a problem on this error message, when i try this:

Error Code: 1062. Duplicate entry ‘1’ for key ‘PRIMARY’

I haven’t auto_increment data, PLEASE HELP me!

This is the table related, UFFICIO-INFORMAZIONI

INSERT INTO

8 Answers 8

The main reason why the error has been generated is because there is already an existing value of 1 for the column ID in which you define it as PRIMARY KEY (values are unique) in the table you are inserting.

Why not set the column ID as AUTO_INCREMENT ?

and when you are inserting record, you can now skip the column ID

If you are using PHPMyAdmin You can be solved this issue by doing this:

CAUTION: Don’t use this solution if you want to maintain existing records in your table.

Step 1: Select database export method to custom:

Step 2: Please make sure to check truncate table before insert in data creation options:

Now you are able to import this database successfully.

If you are trying to populate a table from a SQL dump, make sure that the table listed in the «INSERT INTO» statements of the dump is the same one you are trying to populate. Opening «MyTable» and importing with a SQL dump will throw exactly that kind of error if the dump is trying to put entries into «MyOtherTable», which may already have entries.

The problem is related with your file — you are trying to create a DB using a copy — at the top of your file you will find something like this:

CREATE DATABASE IF NOT EXISTS *THE_NAME_OF_YOUR_DB* DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci; USE *THE_NAME_OF_YOUR_DB* ;

and I’m sure that you already have a DB with this name — IN THE SAME SERVER — please check. Just change the name OR ERASE THIS LINE!

When I get this kind of error I had to update the data type by a notch. For Example, if I have it as «tiny int» change it to «small int»

I just encountered the same issue but here it seemed to come from the fact that I declared the ID-column to be UNsigned and that in combination with an ID-value of ‘0’ (zero) caused the import to fail.

So by changing the value of every ID (PK-column) that I’d declared ‘0’ and every corresponding FK to the new value, my issue was solved.

If you have a new database and you make a fresh clean import, the problem may come from inserting data that contains a ‘0’ incrementation and this would transform to ‘1’ with AUTO_INCREMENT and cause this error.

My solution was to use in the sql import file.

Also check your triggers.

Encountered this with a history table trigger which tried to insert the main table id into the history table id instead of the correct hist-table . source_id column.

The update statement did not touch the id column at all so took some time to find:

The trigger tried to do something similar to this:

Оцените статью
SoftLast
Добавить комментарий