Ошибка связана с режимом sql, который может быть строгим режимом в соответствии с последней документацией MYSQL 5.7.
В документации MySQL 5.7 говорится :
Строгий режим влияет на то, разрешает ли сервер «0000-00-00» в качестве допустимой даты: если строгий режим не включен, «0000-00-00» разрешен, и вставки не вызывают предупреждений. Если включен строгий режим, «0000-00-00» не разрешен, и вставки выдают ошибку, если также не задано IGNORE. Для INSERT IGNORE и UPDATE IGNORE разрешено '0000-00-00', а вставки выдают предупреждение.
Чтобы проверить режим MYSQL
SELECT @@GLOBAL.sql_mode global, @@SESSION.sql_mode session
Отключение режима STRICT_TRANS_TABLES
Однако, чтобы разрешить формат, 0000-00-00 00:00:00
вы должны отключить режим STRICT_TRANS_TABLES в файле конфигурации mysql или с помощью команды
По команде
SET sql_mode = '';
или
SET GLOBAL sql_mode = '';
Использование ключевого слова GLOBAL
требует суперпредложений и влияет на операции, которые с этого момента подключаются все клиенты.
если указанное выше не работает, перейдите к /etc/mysql/my.cnf
(согласно ubuntu) и закомментируйтеSTRICT_TRANS_TABLES
Кроме того, если вы хотите постоянно устанавливать режим sql при запуске сервера, включите его SET sql_mode=''
в my.cnf
Linux или MacOS. Для окон это должно быть сделано в my.ini
файле.
Заметка
Однако строгий режим не включен по умолчанию в MYSQL 5.6. Следовательно, он не вызывает ошибку согласно документации MYSQL 6, в которой говорится
MySQL позволяет вам сохранять «нулевое» значение «0000-00-00» в качестве «фиктивной даты». В некоторых случаях это более удобно, чем использование значений NULL, и требует меньше данных и места для индекса. Чтобы запретить «0000-00-00», включите режим SQL NO_ZERO_DATE.
ОБНОВИТЬ
Что касается ошибки, как сказал @ Dylan-Su:
Я не думаю, что это ошибка в том, как MYSQL развивается с течением времени, из-за чего некоторые вещи меняются в зависимости от дальнейшего улучшения продукта.
Однако у меня есть еще один отчет об ошибке, связанный с NOW()
функцией
Поле даты и времени не принимает значение по умолчанию NOW ()
Еще одно полезное примечание [см. Автоматическая инициализация и обновление для TIMESTAMP и DATETIME ]
Начиная с MySQL 5.6.5 столбцы TIMESTAMP и DATETIME могут быть автоматически инициализированы и обновлены до текущей даты и времени (то есть текущей метки времени). До версии 5.6.5 это верно только для TIMESTAMP и не более одного столбца TIMESTAMP в таблице. Следующие ниже примечания сначала описывают автоматическую инициализацию и обновление для MySQL 5.6.5 и выше, а затем различия для версий, предшествующих 5.6.5.
Обновление касательно NO_ZERO_DATE
Начиная с MySQL 5.7.4 этот режим устарел. Для предыдущей версии вы должны закомментировать соответствующую строку в файле конфигурации. Обратитесь к документации MySQL 5.7 на NO_ZERO_DATE
NULL
нужно.