Dapper и анонимные типы

Ошибка возникает из-за режима 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

30
задан Peter 20 June 2011 в 01:17
поделиться