MySQL问题记录——定义timestamp类型的数据

摘要:本文主要记录了在使用MySQL的过程中定义timestamp类型数据时遇到的问题以及解决方案。

问题重现

在Windows环境下安装MySQL,配置服务的时候出现的问题:

 D:\All\MySQL\mysql-5.6.44-winx64\bin>mysqld --initialize
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).
2019-07-01 19:16:13 0 [Note] mysqld (mysqld 5.6.44) starting as process 14996 ... D:\All\MySQL\mysql-5.6.44-winx64\bin>

解决办法

在配置文件中加入:

 [mysqld]
# explicit_defaults_for_timestamp
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问题记录——定义timestamp类型的数据的更多相关文章

  1. Python使用Mysql官方驱动(取出dict类型的数据)

    简介 虽然Python有很多连接mysql的库,比如mysqldb, pymysql~这些都很方便,现在就教大家使用mysql的官方库来操作mysql. 安装 windows: 下载链接 选择自己的w ...

  2. 在controller中将timestamp类型的数据通过toString()方法变成字符串

    然后在miniui里面将dateFormat="yyyy-MM-dd",变成想要的格式.

  3. MySQL数据库数据类型之集合类型SET测试总结

    MySQL数据库提供针对字符串存储的一种特殊数据类型:集合类型SET,这种数据类型可以给予我们更多提高性能.降低存储容量和降低程序代码理解的技巧,前面介绍了首先介绍了四种数据类型的特性总结,其后又分别 ...

  4. mysql中datetime与timestamp的比较

    相同 显示 TIMESTAMP列的显示格式与DATETIME列相同.换句话说,显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS. 不同 范围 datetime 以'YYYY-M ...

  5. oracle数据库的date和timestamp类型

    1.date类型存储数据的格式为年月日时分秒,可以精确到秒 timestamp类型存储数据的格式为年月日时分秒,可以精确到纳秒(9位) 2.date类型 Date类型的数据可以显示到年月日,也可以显示 ...

  6. Hibernate保存Blob和Clob类型的数据

    虽然非常不建议在数据库中保存Blob和Clob类型的数据,但真的要有这样的需求呢?这里记录一下使用Hibernate如何向数据库中保存Blob和Clob数据. Oracle和MySql在Blob类型上 ...

  7. Sql server 浅谈用户定义表类型

    1.1 简介 SQL Server 中,用户定义表类型是指用户所定义的表示表结构定义的类型.您可以使用用户定义表类型为存储过程或函数声明表值参数,或者声明您要在批处理中或在存储过程或函数的主体中使用的 ...

  8. mysql中datetime和timestamp的区别

    原文地址:http://database.51cto.com/art/200905/124240.htm 相同 显示 TIMESTAMP列的显示格式与DATETIME列相同.换句话说,显示宽度固定在1 ...

  9. MySQL的timestamp类型自动更新问题

    今天建了一个表,里面有一个列是timestamp类型,我本意是在数据更新时,这个字段的时间能自动更新.岂知对这个类型的值还不甚了解,导致出错.发现这个字段只是在这行数据建立的时候有值,在更新的却无变化 ...

随机推荐

  1. /etc/profile和~/.bash_profile等文件的区别和联系

    对比说明:/etc/profile:为系统的每个用户设置环境信息和启动程序,当用户第一次登录时,该文件被执行,其配置对所有登录的用户都有效.当被修改时,必须重启才会生效.英文描述:”System wi ...

  2. Linux下正确修改Docker镜像和容器的默认存储位置,亲测有效

    我们通过 yum 的方式安装完Docker环境后,它默认的存储位置是 /var/lib/docker,默认的 pid 存放位置是 /var/run/docker.pid. 如果仅仅是做测试,我们可能没 ...

  3. 阿里云CDN接入踩坑记录

    最近负责的系统安全要求接入CDN,避免DDOS之类攻击,然后华丽丽踩了两个大坑.回顾问题原因后,发现还是相关人员都对CDN原理不够熟悉.了解导致. 坑一:默认支持的文件上传最大是300M 问题现象: ...

  4. css伪类实现行号自动填充

    css伪类实现行号自动填充 大多数时候我们需要行号自动填充的时候我们可以 大多数时候是插入元素, 在元素里用js填入行号,或者用 ol > li 实现行号填充, 对于上面的方式,都不太灵活,而且 ...

  5. [b0029] python 归纳 (十四)_队列Queue实现生产者消费者

    # -*- coding: UTF-8 -*- """ 多线程的生产者,消费者 使用队列Queue """ import Queue imp ...

  6. MySQL获取指定字段不重复的记录

    关键词:DISTINCT 1.比如数据库一组数据查询如下,返回店铺下所有的区域id 2.SQL统计返回指定字段 district 不重复的 记录id,SQL如下 SELECT DISTINCT(dis ...

  7. mysql 实现全连接

    mysql不支持全连接,但可以通过左外连接+ union+右外连接实现 SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id UNION SELECT * FR ...

  8. Linux—使用man命令:man:command not found

    # 用echo $PATH查看该环境变量.这种问题一般是环境变量PATH不对的问题. [root@localhost ~]# echo $PATH # 用whereis命令查看,该指令的位置. [ro ...

  9. python使用execjs执行含有document、window等对象的js代码,使用jsdom解决

    当我们分析爬虫时,有时候会遇到一些加密参数,这个时候就需要我们逆向分析js python执行js有一些第三方库 https://www.jianshu.com/p/2da6f6ad01f0 因为我用的 ...

  10. [转]5 种使用 Python 代码轻松实现数据可视化的方法

    数据可视化是数据科学家工作中的重要组成部分.在项目的早期阶段,你通常会进行探索性数据分析(Exploratory Data Analysis,EDA)以获取对数据的一些理解.创建可视化方法确实有助于使 ...