首页 > 数据库 >Mysql 插入timestamp没有使用默认值问题

Mysql 插入timestamp没有使用默认值问题

时间:2022-10-11 11:47:49浏览次数:81  
标签:set timestamp null 插入 Mysql 默认值

在一次升级过程中,发现Mysql插入数据报了个错

Column 'create_time' cannot be null.

但是看了下这个字段虽然是非null,但是是有默认值的

`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

报这个错的原因是往这个字段里插入了null,但是没有用默认值代替null

看了下本地和服务器的Mysql版本都是5.7,在本地是没有问题的

最后发现是有一个explicit_defaults_for_timestamp参数去控制timestamp的列的默认值还是NULL

show variables like 'explicit_defaults_for_timestamp';

这个参数默认为off

当设置为off时:

如果往这个列中插入null值,会自动的设置该列的值为current timestamp值

当设置为on时:

此时向该列中插入null值时,会直接记录null,而不是current timestamp

修改参数可以使用set或者修改my.cnf配置,set重启会失效

//改成off
set GLOBAL explicit_defaults_for_timestamp = 1

参考:https://segmentfault.com/a/1190000018818020

标签:set,timestamp,null,插入,Mysql,默认值
From: https://www.cnblogs.com/aruo/p/16778676.html

相关文章

  • 【MySQL系列】-索引知多少
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。​​点击跳转到网站。​​索引及其作用索引(Index)是帮助MySQL高效获取数据的数据结构。索......
  • 一文读懂 MySQL 索引
    1索引简介1.1什么是MySQL的索引官方定义:索引是帮助MySQL高效获取数据的数据结构从上面定义中我们可以分析出索引本质是一个数据结构,他的作用是帮助我们高效获取数......
  • Docker | Compose创建mysql容器
    本文通过DockerCompose来创建mysql容器在linux服务器上创建文件,用于管理容器mkdirdocker-mysqlcddocker-mysqlvimdocker-compose.yml#写入如下内容docker-c......
  • Mysql:聚集索引和非聚集索引
    聚集索引聚集索引概述聚集索引特点聚集索引优缺点聚集索引限制聚集索引真实开发总结1张表只能有1个聚聚索引,都是用主键作为聚聚索引使用。因此在建表的时候聚......
  • MySQL主从复制-利用冷备份搭建从库
    1、启动从库,目录文件配置路径:basedir=/u01/mysql/basedatadir=/u01/mysql/datatmpdir=/u01/mysql/tmp2、将冷备份data目录复制到新实例下的,datadir$lltotal20drwxr......
  • MySQL架构总览->查询执行流程->SQL解析顺序
    前言:一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了。本文将从MySQL总体架构--->查询执行流程--->语......
  • MYSQL 数据查询
    参考资料:https://blog.csdn.net/qq_43511677/article/details/118899906?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~defau......
  • MySQL8.0主从关系 - 主人与仆从
    MySQL原本是一个开放源码的关系数据库管理系统,原开发者为瑞典的MySQLAB公司,该公司于2008年被昇阳微系统(SunMicrosystems)收购。2009年,甲骨文公司(Oracle)收购昇阳微系......
  • 解决spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver报红
    解决spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver无法引用解决办法:点击查看代码<!--mysql--><dependency><groupId>mysq......
  • DDL/DML/DQL/DQL---mysql
    0.DQL  (DataDefinitionLanguage):【数据查询语言】用来定义数据库对象:库、表、列等使用DQL对数据进行操作之后,校验数据的准确性,用到selectfrom,包括where过滤条件、orde......