数据库建表脚本,如果字段不显示申明不为空,则默认为null,例如
create table user
(
user_id varchar(255) not null,
name varchar(255),
age int
)
但是遇到timestamp类型的字段时,如果只有一个timestamp类型的字段,这样写是没有什么问题的
create table user
(
create_time timestamp
)
但是如果出现两个这样的字段,sql就会报错,会出现invalid default value for update_time
create table user
(
create_time timestamp,
update_time timestamp
)
如何解决?
1.显式声明null 或者 not null
2.在mysql的my.cnf文件中增加explicit_defaults_for_timestamp=1
这种错误我是在5.7.18中遇到的,但是拿到5.7.28去测试又没有问题了
#正确写法
create table user
(
create_time timestamp not null default current_timestamp, # insert默认插入
update_time timestamp not null default current_timestamp on update current_timestamp # insert默认插入,update默认更新
)