Ошибка MySQL Incorrect datetime value: ‘0000-00-00 00:00:00’

Появляется, если поле типа datetime уже содержит подобные нулевые значения при попытке изменить как тип поля (через alter table), так и сами значения в таблице.

Вероятно ошибка возникает, если вы импортировали данные в вашу базу. Скорее всего из-за не совпадения настроек баз данных, а именно отличия режимов, задаваемых в глобальной переменной sql_mode.

Подробнее о режимах можно почитать тут — https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html

Сообщение ‘Incorrect datetime value’ вызывается режимами NO_ZERO_IN_DATE, NO_ZERO_DATE, отключите их и также ERROR_FOR_DIVISION_BY_ZERO. MySQL перестанет обращать внимание на ‘нулевые’ даты.

Для начала проверьте, какие настройки у вас активны:

Удалите значения режимов, связанных с нулевой датой. И задайте новое значение переменной sql_mode.

Помните, что если вы сделаете просто SET, то настройка будет действовать в рамках транзакции. Вам скорее всего потребуется установить значение для сессии или перманентно (глобально):

Но это также временные меры, после перезапуска mysql сервера, настройки вернутся к начальным. Для постоянного изменения нужно добавить значение для sql_mode в файл /etc/mysql/my.cnf:

У меня из всего перечня, к примеру, осталась только директива для группировки.

Мало букафф? Читайте есчо !

Как узнать версию MySQL?

Сентябрь 3, 2018 г.

Получить версию бд можно как из консоли, так и средствами языка mySQL. Версия из консоли UNIX Тут все просто. Получаем версию из консоли. [crayon-69ecc453c6587078363487/] Версия из SQL консоли Как получить версию mySQL не из unix консоли, а средствами ...

Читать

Считаем полное число строк в запросе MySQL, ограниченного LIMIT

Ноябрь 2, 2012 г.

О полезном операторе - SQL_CALC_FOUND_ROWS. Это конструкция просто незаменима для организации постраничного вывода каких либо данных. Все время забываю синтаксис, приходится каждый раз искать. Решил записать в блоге, чтобы уж не терять :). Во всех ...

Читать

Mysqldump без блокировки таблиц

Ноябрь 11, 2019 г.

По умолчанию для mysqldump требуются права пользователя на блокировку таблиц. Потому, когда вы создаёте бекапы, вы можете получить сообщение вроде: mysqldump: Got error: 1044: "Access denied for user 'USER'@'%' to database 'DATABASENAME'" when ...

Читать

Развертывание бекапов mySQL из консоли unix

Февраль 6, 2018 г.

Как развернуть дамп базы данных mySQL, созданный ранее? Дамп представляет из себя mysql скрипт, в котором последовательно создаются таблицы (CREATE TABLE ...) и, возможно, другие объекты и производиться их наполнение (INSERT INTO ...). Нужно лишь отправить ...

Читать
 

Комментарии к «Ошибка MySQL Incorrect datetime value: ‘0000-00-00 00:00:00’»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: