zoukankan      html  css  js  c++  java
  • 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’,同时出现警告。

  • 相关阅读:
    团队项目冲刺第九天
    团队项目冲刺第八天
    团队项目冲刺第七天
    团队项目冲刺第六天
    vue-cli(vue脚手架)详细教程
    Ocelot+Consul 集群搭建实践
    docker部署net core项目
    nginx配置文件
    条码扫描器
    转载:MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息
  • 原文地址:https://www.cnblogs.com/shamao/p/11112076.html
Copyright © 2011-2022 走看看