У меня есть таблица indice_hora с 6 столбцами:
- date (pk) | Composite
- agent_id (pk) | Primary Key
- contagem
- movimento
- preenchimento
- state_changes
Я недавно добавил столбец state_changes без значения по умолчанию, поэтому сейчас я пытаюсь обновить все нулевые значения до 0.
Я пытаюсь запустить этот код:
update indice_hora
set state_changes = 0
where state_changes is null;
Но я получаю эту ошибку:
[2019-01-25 08:55:38] [23000][1062] Duplicate entry '2019-01-25 08:55:38-0' for key 'PRIMARY'
Почему я получаю эту ошибку, даже если я не обновляюськакие-либо ключевые значения?
OBS 1: в этой таблице нет строк с датой '2019-01-25 08: 55: 38-0'.
OBS 2: Эта таблица в основном обновляется триггером:
create trigger update_indice_hora_table
after INSERT
on indice
for each row
INSERT INTO indice_hora VALUES (DATE_FORMAT(NEW.data_hora_registro, '%Y-%m-%d %H:00:00'), NEW.id_agent, NEW.contagem, NEW.mobilidade, NEW.preenchimento, 0)
ON DUPLICATE KEY UPDATE indice_hora.data = DATE_FORMAT(NEW.data_hora_registro, '%Y-%m-%d %H:00:00'),
indice_hora.id_agent = NEW.id_agent,
indice_hora.contagem = ((indice_hora.contagem + NEW.contagem) / 2),
indice_hora.movimento = ((indice_hora.movimento + NEW.mobilidade) / 2),
indice_hora.preenchimento = ((indice_hora.preenchimento + NEW.preenchimento) / 2);
РЕДАКТИРОВАТЬ 1: Похоже, что '2019-01-25 08: 55: 38-0' было текущим временем, когда я катался на программе.Каждый раз, когда я запускаю скрипт, дублирующаяся запись соответствует текущему времени.