概述
MySQL问题记录——定义timestamp类型的数据
摘要:本文主要记录了在使用MySQL的过程中定义timestamp类型数据时遇到的问题以及解决方案。
问题重现
在Windows环境下安装MySQL,配置服务的时候出现的问题:
1 D:AllMySQLmysql-5.6.44-winx64bin>mysqld --initialize2 2019-07-01 19:16:13 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
3 2019-07-01 19:16:13 0 [Note] mysqld (mysqld 5.6.44) starting as process 14996 ...
4
5 D:AllMySQLmysql-5.6.44-winx64bin>
解决办法
在配置文件中加入:
1 [mysqld]2 #explicit_defaults_for_timestamp3 explicit_defaults_for_timestamp=true
问题说明
MySQL5.6.6以前:
如果timestamp类型的列指定值为null,默认为当前timestamp。
如果timestamp类型的列没有指定值为null,也就是没有传值,默认为非null的一个值。
表中第一个timestamp列,如果没有指定值为null、也没有设置默认值,在插入和更新时都会设置为当前时间。
表中第一个timestamp列之后的所有timestamp列,如果没有被定义为null、定义default值,会设置为'0000-00-00 00:00:00'。
MySQL5.6.6以后,需要在配置文件里设置 explicit_defaults_for_timestamp=true ,其含义为:
如果timestamp类型的列指定值为null,默认为当前timestamp。
如果timestamp类型的列没有指定值为null,也就是没有传值,默认为null。
声明timestamp类型的列不为能为null,而且没有指定默认值。在插入时timestamp类型的列没有指定值,如果是严格sql模式,会抛出一个错误,如果严格sql模式没有启用,该列会赋值为‘0000-00-00 00:00:00’,同时出现警告。
最后
以上就是动人鸵鸟为你收集整理的mysql中记录的定义_MySQL问题记录——定义timestamp类型的数据的全部内容,希望文章能够帮你解决mysql中记录的定义_MySQL问题记录——定义timestamp类型的数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复