Bug #63034 | Unnessary syntax restricition on TIMESTAMP | ||
---|---|---|---|
Submitted: | 31 Oct 2011 10:42 | Modified: | 19 Dec 2012 11:53 |
Reporter: | Peter Laursen (Basic Quality Contributor) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: DDL | Severity: | S3 (Non-critical) |
Version: | 5.5.17 + 5.6.8 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | qc |
[31 Oct 2011 10:42]
Peter Laursen
[31 Oct 2011 13:09]
Valeriy Kravchuk
This is easy to verify: macbook-pro:5.5 openxs$ bin/mysql -uroot test Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.5.17-debug Source distribution Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> DROP TABLE IF EXISTS nul; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> CREATE TABLE nul (id TIMESTAMP DEFAULT NULL); ERROR 1067 (42000): Invalid default value for 'id' mysql> CREATE TABLE nul (id TIMESTAMP NULL DEFAULT NULL); Query OK, 0 rows affected (0.13 sec) mysql> show create table nul\G *************************** 1. row *************************** Table: nul Create Table: CREATE TABLE `nul` ( `id` timestamp NULL DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec) mysql> insert into nul values(NULL); Query OK, 1 row affected (0.00 sec) mysql> select * from nul; +------+ | id | +------+ | NULL | +------+ 1 row in set (0.00 sec) And, indeed, looks a bit inconsistent. Probably at least more detailed error message, explaining unique property of TIMESTAMP column in this case, is needed.
[9 Aug 2012 16:52]
Paul DuBois
This is possible in 5.6.6 with the introduction of explicit_defaults_for_timestamp.
[15 Nov 2012 12:23]
Peter Laursen
I am sorry, but it does not work in 5.6.8: SELECT VERSION(); -- 5.6.8-rc CREATE TABLE nul (id TIMESTAMP DEFAULT NULL); -- Error Code: 1067 -- Invalid default value for 'id' Reopening!
[18 Dec 2012 19:56]
Sveta Smirnova
Thank you for the feedback. This was not closed indeed. Set back to "Verified".
[19 Dec 2012 11:53]
Sveta Smirnova
Peter, I am sorry, I was too fast. Bug is really closed now. See explanation. CREATE TABLE nul (id TIMESTAMP DEFAULT NULL) does pass with --explicit_defaults_for_timestamp server startup option. Following is the documentation snippet that states the same, http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_exp licit_defaults_for_timestamp "...enable the new explicit_defaults_for_timestamp system variable at server startup. With this variable enabled, the server handles TIMESTAMP as follows instead: TIMESTAMP columns not explicitly declared as NOT NULL permit NULL values. ..."