MySQL创建多列timestamp报错ERROR 1067 (42000): Invalid default value for 'createtime'

可能的问题:

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表失败不知道是什么原因。

posted on 2020-09-23 07:03  我欲皆真  阅读(1083)  评论(0编辑  收藏  举报

导航