Пожалуйста, рассмотрите возможность перехода на InnoDB.
В MySQL тип данных TIMESTAMP нестандартным образом отличается от других типов данных:
TIMESTAMP столбцам, явно не объявленным с атрибутом NULL, присваивается атрибут NOT NULL. (Столбцы других типов данных, если они явно не объявлены как NOT NULL, допускают значения NULL.) Установка для такого столбца значения NULL устанавливает его в текущую метку времени.
Первый столбец TIMESTAMP в таблице, если он не объявлен с атрибутом NULL или явным предложением DEFAULT или ON UPDATE, автоматически назначается атрибутам DEFAULT CURRENT_TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP.
TIMESTAMP столбцы, следующие за первым, если они не объявлены с атрибутом NULL или явным предложением DEFAULT, автоматически присваиваются DEFAULT '0000-00-00 00:00:00' («ноль») отметка времени). Для вставленных строк, которые не указывают явного значения для такого столбца, столбцу присваивается значение «0000-00-00 00:00:00», и предупреждение не появляется.
Эти нестандартные поведения остаются по умолчанию для TIMESTAMP , но теперь устарели, и это предупреждение появляется при запуске:
[Предупреждение] TIMESTAMP с неявным значением DEFAULT не рекомендуется.
Пожалуйста, используйте --explicit_defaults_for_timestamp параметр сервера (см.
документация для более подробной информации).
Как указывается в предупреждении, чтобы отключить нестандартное поведение, включите новую системную переменную licit_defaults_for_timestamp при запуске сервера. Если эта переменная включена, сервер обрабатывает TIMESTAMP следующим образом:
TIMESTAMP столбцы, явно не объявленные как NOT NULL, допускают значения NULL. Установка такого столбца в NULL устанавливает его в NULL, а не в текущую метку времени.
Нет TIMESTAMP столбцу автоматически присваиваются атрибуты DEFAULT CURRENT_TIMESTAMP или ON UPDATE CURRENT_TIMESTAMP. Эти атрибуты должны быть явно указаны.
TIMESTAMP столбцы, объявленные как NOT NULL и без явного предложения DEFAULT, обрабатываются как не имеющие значения по умолчанию. Для вставленных строк, которые не указывают явного значения для такого столбца, результат зависит от режима SQL. Если включен режим строгого SQL, возникает ошибка. Если режим строгого SQL не включен, столбцу присваивается неявное значение по умолчанию «0000-00-00 00:00:00», и появляется предупреждение. Это похоже на то, как MySQL обрабатывает другие временные типы, такие как DATETIME .