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


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

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

    问题重现

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

    1 D:AllMySQLmysql-5.6.44-winx64in>mysqld --initialize
    2 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-winx64in>

    解决办法

    在配置文件中加入:

    1 [mysqld]
    2 # explicit_defaults_for_timestamp
    3 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’,同时出现警告。

  • 相关阅读:
    时间复杂度,空间复杂度
    冒泡排序,选择排序,插入排序
    redis集群
    redis进阶
    redis常识--基础
    mysql基本操作
    TCP/IP 的介绍
    OSI七层网络模型&TCP&UDP&三握四挥
    DNS
    局域网&广域网
  • 原文地址:https://www.cnblogs.com/shamao/p/11112076.html
Copyright © 2020-2023  润新知