Подтвердить что ты не робот

Ошибка MySQL - # 1062 - Дублирующая запись '' для ключа 2

Я пытаюсь вставить огромный список пользователей в базу данных MySQL, но каждый раз, когда я пытаюсь, я получаю ошибку:

#1062 - Duplicate entry '' for key 2

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

Это код sql для вставки 1 записи. Остальные следуют в том же формате:

INSERT INTO users
  (`id`,`title`,`firstname`,`lastname`,`company`,`address`,`city`,`county`
   ,`postcode`,`phone`,`mobile`,`category`,`email`,`password`,`userlevel`) 
VALUES     
  ('','','John','Doe','company','Streeet','city','county'
  ,'postcode','phone','','category','[email protected]','','');
4b9b3361

Ответ 1

В дополнение к ответу Sabeen:

Первый идентификатор столбца - ваш первичный ключ.
Не вставляйте '' в первичный ключ, но вместо этого вставляйте нуль.

INSERT INTO users
  (`id`,`title`,`firstname`,`lastname`,`company`,`address`,`city`,`county`
   ,`postcode`,`phone`,`mobile`,`category`,`email`,`password`,`userlevel`) 
VALUES     
  (null,'','John','Doe','company','Streeet','city','county'
  ,'postcode','phone','','category','[email protected]','','');

Если это ключ автоинкремента, это устранит вашу проблему.
Если не сделать id ключ автоинкремента и всегда вставлять null в него, чтобы вызвать автоинкремент.

У MySQL есть настройка для автоинкрементных ключей только на вкладке null или на обеих вставках 0 и null. Не рассчитывайте на этот параметр, потому что ваш код может сломаться, если вы измените сервер.
Если вы вставляете null, ваш код всегда будет работать.

Смотрите: http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

Ответ 2

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

Ответ 3

Проверьте свой индекс таблицы. Если это поле получило индекс (например, индекс дерева B +). В это время запрос обновления или вставки вызывает такие ошибки.

Удалите индексирование, а затем попытайтесь запустить тот же запрос.

Ответ 4

Я получил эту ошибку, когда попытался установить столбец как уникальный, когда в столбце были уже дублированные данные или если вы попытаетесь добавить столбец и установить его как уникальное, когда в таблице уже есть данные.

У меня была таблица с 5 строками, и я попытался добавить уникальный столбец, и это не получилось, потому что все 5 из этих строк будут пустыми и, следовательно, не уникальными.

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

Ответ 5

Как было сказано, у вас есть уникальный индекс.

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

Это означает, что все эти записи содержат значение NULL, а не пустую строку ''. Mysql позволяет вам иметь несколько значений NULL в уникальных полях.

Ответ 6

Ошибка "Дублировать запись" 338620-7 "для ключа 2" по запросу. База данных по умолчанию

Для этой ошибки:

set global sql_slave_skip_counter=1; 
start slave; 
show slave status\G

Это сработало для меня

Ответ 7

вы можете попробовать добавить

$db['db_debug'] = FALSE; 

в "вашем файле базы данных".php после этого вы можете изменить свою базу данных по своему усмотрению.

Ответ 8

  • Сначала сбрасываем первичный ключ: (Первичным ключом является ваша ответственность)

    ALTER TABLE Persons DROP PRIMARY KEY ;
    
  • Затем сделайте все вставки:

  • Добавьте новый первичный ключ так же, как и до удаления:

    ALTER TABLE Persons ADD PRIMARY KEY (P_Id);