Получение "Дублирующая запись 'foo' для ключа 'PRIMARY'" при использовании ON DUPLICATE KEY UPDATE - PullRequest
0 голосов
/ 21 апреля 2020

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

Запрограммировано в: Python.

Проще говоря, я получаю Duplicate Key Error. Я изучил другие вопросы, которые были подняты по этому поводу, и, насколько мне известно, я следую предложению, которое дали эти ответы.

Фрагмент структуры таблицы:

CREATE TABLE `BAR_TABLE` (
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`foo` tinytext,
`bar` tinytext,
`uuid` varchar(25) NOT NULL,
PRIMARY KEY (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

В этом случае 'uuid' является ПЕРВИЧНЫМ, так как уже существует набор данных, в который он входит, этот uuid всегда уникален (если он не существует, тогда он обновление информации о потенциале)

SQL Фрагмент

INSERT INTO BAR_TABLE (
    foo, 
    bar,
    uuid  
    ) VALUES (
        %(foo)s, 
        %(bar)s, 
        %(uuid)s
    ) ON DUPLICATE KEY UPDATE 
        foo = VALUES(foo), 
        bar = VALUES(bar)

Поэтому причина, по которой SQL выглядит так, заключается в том, что я использую executemany (). А также данные, которые входят в это Python словарь. Таким образом, это позволяет ему присваивать все значения в словарных данных оператору SQL. Затем все это перемещается в БД с помощью executemany ().

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

Очевидно, я что-то не понимаю. Я неправильно понимаю, как работает ПЕРВИЧНЫЙ КЛЮЧ? Или какой ключ использует ON DUPLICATE KEY UPDATE?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...