可能的问题:
1.default 用了‘0’,mysql5.7之后使用严格模式是不能这样写的,我百度了一些博客,发现早些年的博客都有timestamp default 0,但是我本地出错了。
2.没有显式指定default,我执行
create table a(a timestamp); #成功执行 create table b(a timestamp, b timestamp); #出错,ERROR 1067 (42000): Invalid default value for 'b' create table c(a timestamp default current_timestamp on update current_timestamp, b timestamp default current_timestamp on update current_timestamp); #成功 # 但是按理来说,如果b成功执行之后,使用show create table a 可以知道show create table b 和 show create table c的结果应该是一致的。
| c2 | CREATE TABLE `c2` ( `a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
| aa | CREATE TABLE `aa` ( `a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
不清楚是不是触及到了什么知识盲点,创建b表失败不知道是什么原因。