Почему поле временной метки не может получить значение по умолчанию?
Я пробую следующую таблицу изменений: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