在
MySQL8.0之前的版本中,TIMESTAMP可以通过为他们赋值NULL而实现自动更新时间戳,在8.0版本之后,默认情况下,会直接赋值为NULL,如果设置为NOT NULL属性,也会进行报错。如果需要兼容之前版本的自动更新,可以将explicit_defaults_for_timestamp禁用。
设置禁用的步骤:
1.查看一下explicit_defaults_for_timestamp的默认值
show VARIABLES like '%explicit_defaults_for_timestamp%';
2. 设置explicit_defaults_for_timestamp变量全局为off
SET GLOBAL explicit_defaults_for_timestamp = 0;
需要注意的是,使用此方法对global全局变量的设置仅对于新开启的会话才是有效的,对已经开启的会话不生效。
参考资料&推荐阅读:
CSDN--《MySQL8.0下DATE,DATETIME和TIMESTAMP的自动初始化和更新》












网友评论