MySQL 5.5 & 5.6 default values
default-value, mysql
Solution
The behavior you showed above in 5.5 was actually a bug. This was fixed in 5.6.11. Check out the release notes for 5.6.11 at the very bottom. It was part of bugs 68472 and 16394472 (which I can't actually find a link to).
If you turn the `explicit_defaults_for_timestamp` flag off, it SHOULD work as it did in 5.5
This was the exact same issue that I had with our DB when we updated from 5.5 to 5.6.
Problem
I'd like some clarification on the behaviour of default values in MySQL 5.5 & 5.6. Lets say we have the following table on a MySQL 5.5 server: ``` CREATE TABLE `test` ( `TestColumn` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=INNODB DEFAULT CHARSET=utf8; ``` I am able to run the following query without issue: ``` INSERT INTO `test` VALUES (NULL); ``` Which creates the following row: ``` TestColumn 2014-02-20 14:55:05 ``` Now if I repeat the same test on a MySQL 5.6 server, the insert fails: ``` Error Code: 1048 Column 'TestColumn' cannot be null ``` I understand that timestamp automatic initilisation has changed in 5.6 (http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html), but what I can't work out is how to replicate the behaviour seen in 5.5 in 5.6. Not sure if it matters but our 5.6 server has explicit_defaults_for_timestamp set to ON. Ideally what I'm after is a solution to this, but if anyone has a better understand and can explain it that would be useful as well. Thanks. EDIT: We are using MySQL 5.6.13