mysql error 1067 invalid default value for Ошибка NO_ZERO_IN_DATE, NO_ZERO_DATE

Forums:

При добавлении столбца в таблицу таким запросом:

ALTER TABLE `adv_booking` ADD `format_id` INT(11) DEFAULT NULL;

появляется ошибка:

sql error 1067 invalid default value for 'period_start'

Столбец 'period_start' находится в необходимой мне таблице, и имеет структуру:

`period_start` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'

Решение

Собственно, проблема в sql_mode. По дефолту, этот параметр включает в себя значения:
"NO_ZERO_IN_DATE,NO_ZERO_DATE", которые и блокируют запрос.

В этом можно убедиться, выполнив запрос:

show variables like 'sql_mode' ; 

Ответом будет:

'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

Решение - удалить эти 2 параметра. Для этого, войдем в mysql под root, и выполним:

set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';