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