За последние 24 часа нас посетили 17819 программистов и 1627 роботов. Сейчас ищут 1479 программистов ...

Duplicate entry for key 'PRIMARY'

Тема в разделе "MySQL", создана пользователем marsik, 31 янв 2017.

  1. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    Приветствую.
    Имею таблицу с полями:
    id - primary, auto_increment
    title,
    description,
    somefield,
    unique - unique

    Запрос:
    Код (Text):
    1.  
    2. insert into table (title, description, somefield, unique) values ('$title', '$description', '$somefield', '$unique') on duplicate key update `somefield` = '999'
    Если при обновление данных значение $somefield совпадает со значением в поле somefield с данными в уже имеющейся записи (обновляемся), то ошибка не выходит, если не совпадает, то выходит ошибка: Duplicate entry 'id первичного ключа' for key 'PRIMARY' Ошибка из-за 2-х уникальных полей происходит или глюк какой-то (тестирую в локалке)?
     
  2. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @marsik хмм а если убрать on duplicate key update `somefield` = '999' и нет совпадений ошибка происходит?
     
  3. san4ez

    san4ez Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    а REPLACE INTO не подойдет?
     
  4. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    нет, мне id новые не нужны
    логично предположить, что данной ошибки не будет
     
  5. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @marsik я имел ввиду несоответствие типов, но это наврятли. но уникален же столбец unique а не somefield те полагаю надо както так key update unique++

    & скинь sql создание таблицы
     
  6. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    первичный тоже уникальный, если гадать, то по всей вероятности из-за 2-х уникальных ключей, наверняка если на id оставить только auto_increment , то все заработает как хочется)) Забыл упомянуть, ошибку он дает, но он все таки меняет поле, но при этом выходит из цикла, а может просто нужно убрать вывод ошибки or die (mysqli_error($link));
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    может там уже два одинаковых id сидят?
     
  8. san4ez

    san4ez Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    загуглил, нашел что бывает в mysql такой глюк. советуют выполнить команду оптимизации или удалить/создать индекс заново или изменить(обычно увеличивают размер) тип поля. В общем как-нибудь модифицировать таблицу...
     
  9. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    Спасибо откликнувшимся. Нашел ошибку, была в другом запросе))