Почему поле временной метки не может получить значение по умолчанию?

Я пробую следующую таблицу изменений:
ALTER TABLE test MODIFY COLUMN a timestamp NULL DEFAULT '1970-01-01 00:00:01';

Структура таблицы:

CREATE TABLE `test` (
 `a` timestamp NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=utf8

Мой sql_mode это:

STRICT_TRANS_TABLES,
NO_ZERO_IN_DATE,
NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION

Я получаю ошибку: #1067 - Unknown error 1067 Другая вещь, которая сбивает меня с толку, почему это не показывает фактическую ошибку?

1 ответ

Кажется, ваш сервер имеет ALLOW_INVALID_DATES отключен.

Сервер требует, чтобы значения месяца и дня были допустимыми, а не просто в диапазоне от 1 до 12 и от 1 до 31 соответственно. При отключенном строгом режиме недопустимые даты, такие как "2004-04-31", преобразуются в "0000-00-00" и генерируется предупреждение. При включенном строгом режиме недопустимые даты приводят к ошибке. Чтобы разрешить такие даты, включите ALLOW_INVALID_DATES

Другие вопросы по тегам