我在Ubuntu 13.04上运行Percona的mysql分支(5.6.15)。在花了太长时间尝试使用我们的一个ETL进程调试问题之后,我发现mysql正在修改我的create table语法:
mysql> CREATE TABLE test ( test TIMESTAMP );
Query OK, 0 rows affected (0.03 sec)
mysql> show create table test\G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`test` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.01 sec)
mysql>
我不希望这更新触发器,我发现我可以通过使列成为'TIMESTAMP NULL'来解决这个问题,但我也不希望这个字段可以为空。
我是完全偏离基地还是不应该发生这种情况?有没有人遇到过这个?这是一些我不知道的设置,或者这可能是一个错误(我知道他们改变了5.6中时间戳字段的某些行为)?
答案 0 :(得分:1)
这不是错误,只是表中的第一个时间戳列(如果没有另外指定)获取这些属性。你会添加另一个时间戳列,它将不会获得这些属性。在manual中了解有关它的更多信息。如果你真的遇到问题,可能会选择datetime而不是timestamp列吗?