Мне нужно уточнить поведение значений по умолчанию в MySQL 5.5 и 5.6. Допустим, у нас есть следующая таблица на сервере MySQL 5.5:
CREATE TABLE `test` (
`TestColumn` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=INNODB DEFAULT CHARSET=utf8;
Я могу выполнить следующий запрос без проблем:
INSERT INTO `test` VALUES (NULL);
Что создает следующую строку:
TestColumn
2014-02-20 14:55:05
Теперь, если я повторяю тот же тест на сервере MySQL 5.6, вставка не выполняется:
Error Code: 1048
Column 'TestColumn' cannot be null
Я понимаю, что автоматическая инициализация временной метки изменилась в 5.6 (http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html), но то, что я не могу сработать, заключается в том, как реплицировать поведение, наблюдаемое в 5.5 в 5.6.
Не уверен, что это важно, но наш сервер 5.6 имеет значение explicit_defaults_for_timestamp, установленное в положение ON.
В идеале, для меня это решение, но если кто-то лучше понимает и может объяснить, что это было бы полезно.
Спасибо.
EDIT: мы используем MySQL 5.6.13