Ошибка возникает из-за режима sql, который может быть строгим в соответствии с последней документацией MYSQL 5.7
Документация MySQL 5.7 говорит :
Строгий режим влияет на то, разрешает ли серверу «0000-00-00» как действительную дату: если строгий режим не включен, «0000-00-00» разрешен, а вставки не выдают никаких предупреждений. Если включен строгий режим, «0000-00-00» не разрешен, и вставки создают ошибку, если не указано IGNORE. Для INSERT IGNORE и UPDATE IGNORE разрешено «0000-00-00», а вставки выдают предупреждение.
blockquote>Для проверки режима 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», включите режим NO_ZERO_DATE SQL.
blockquote>UPDATE
Что касается вопроса об ошибке, как сказано в @ Dylan-Su:
Я не думаю, что это ошибка в пути MYSQL развивается за время, из-за которого некоторые вещи изменяются в зависимости от дальнейшего улучшения продукта.
Однако у меня есть еще один связанный отчет об ошибке относительно функции
NOW()
Поле Datetime не принимает значение по умолчанию NOW ()
Другое Полезное примечание [см. Автоматическая инициализация и обновление для TIMESTAMP и DATETIME ]
Начиная с MySQL 5.6.5, столбцы TIMESTAMP и DATETIME могут быть автоматически инициализированы и обновлены до текущей даты и времени (то есть текущей метки времени). До 5.6.5 это верно только для TIMESTAMP и не более одного столбца TIMESTAMP для каждой таблицы. Следующие примечания сначала описывают автоматическую инициализацию и обновление для MySQL 5.6.5 и выше, затем различия для версий, предшествующих 5.6.5.
blockquote>Обновление относительно NO_ZERO_DATE
Начиная с версии MySQL с 5.7.4 этот режим устарел. Для предыдущей версии вы должны прокомментировать соответствующую строку в файле конфигурации. См. документацию MySQL 5.7 по NO_ZERO_DATE