Почему ошибка #1292 — Incorrect datetime value: ‘CURRENT_TIMESTAMP(6).000000’ for column ‘updated_at’ at row 1?

Ошибка #1292 в MySQL "Incorrect datetime value: 'CURRENT_TIMESTAMP(6).000000' for column 'updated_at' at row 1" возникает при попытке вставить некорректное значение в столбец с типом данных DATETIME или TIMESTAMP.

При использовании функции CURRENT_TIMESTAMP() без аргументов, MySQL устанавливает текущую дату и время, однако, в данном случае, видимо была попытка установить миллисекунды для значения времени. Стандартный тип данных DATETIME в MySQL не поддерживает миллисекунды, только секунды.

Ошибка указывает, что значение "CURRENT_TIMESTAMP(6).000000" некорректно для столбца 'updated_at'. Это означает, что вам нужно либо изменить тип данных столбца 'updated_at' на TIMESTAMP(6) либо удалить '.000000' из значения, которое вы пытаетесь вставить.

Вариант с изменением типа данных столбца 'updated_at' на TIMESTAMP(6) может выглядеть следующим образом:

ALTER TABLE your_table_name
MODIFY COLUMN updated_at TIMESTAMP(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);

В данном примере мы настраиваем столбец 'updated_at' с типом данных TIMESTAMP(6), чтобы поддерживать миллисекунды. Дополнительно, мы устанавливаем значение по умолчанию для столбца на CURRENT_TIMESTAMP(6) и указываем, что оно должно быть обновлено при каждом обновлении записи.

Если вы не нуждаетесь в точности до миллисекунд, то вам следует удалить '.000000' из значения "CURRENT_TIMESTAMP(6).000000" перед вставкой или обновлением строки в таблице. В этом случае вам не нужно менять тип данных столбца 'updated_at'.

Например, если у вас есть запрос на обновление, вы можете изменить его таким образом:

UPDATE your_table_name
SET updated_at = CURRENT_TIMESTAMP()
WHERE id = 1;

В этом случае мы используем CURRENT_TIMESTAMP() без аргументов, чтобы установить текущую дату и время без миллисекунд.