iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 8.0 timestamp引发的问题怎么解决
  • 272
分享到

MySQL 8.0 timestamp引发的问题怎么解决

2024-04-02 19:04:59 272人浏览 八月长安
摘要

本篇内容介绍了“Mysql 8.0 timestamp引发的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能

本篇内容介绍了“Mysql 8.0 timestamp引发的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

MySQL 8.0 timestamp引发的问题怎么解决

今天业务反馈了一个问题,modify_time字段不允许为null,而业务反馈这个字段是设置了默认值的,具体的业务报错信息如下所示:

MySQL 8.0 timestamp引发的问题怎么解决

从报错信息看,可能是modify_time字段没有设置默认值或默认值设置的不正确导致

接下来查看一下表结构:

CREATE TABLE `jj_xxxx` (
....
  `create_time` timestamp NOT NULL DEFAULT '1999-12-31 23:00:00' ,
  `update_user` int DEFAULT NULL,
  `modify_time` timestamp NOT NULL DEFAULT '1999-12-31 23:00:00',
 ....
  PRIMARY KEY (`Goods_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4893 DEFAULT CHARSET=utf8 COMMENT='xxxxx'

从表结构看,设置的默认值好像也没有啥问题,检查一下sql_mode参数的设置,好像也没有发现啥问题;

业务人员反馈线上的表也是这样的,但是线上是正常的,而目前要把这个业务迁移到其他的环境,从业务到数据库是另外一套环境;

忽然考虑到了数据库版本的差异;迁移的新环境是mysql 8.0版本,而线上环境是5.7版本,两个版本中参数explicit_defaults_for_timestamp 设置的默认值是不一样的;

原因:

explicit_defaults_for_timestamp 系统变量决定MySQL服务端对timestamp列中的默认值和NULL值的不同处理方法。

此变量自MySQL 5.6.6 版本引入,分为全局级别和会话级别,可动态更新,默认值为OFF。

在8.0之中默认值改为了on

explicit_defaults_for_timestamp=OFF,表示使用默认的timestamp默认格式;timestamp类型的默认格式是什么样的呢?

1、和其它字段类型不一样,这个字段默认为not null.而且不允许设置default null.

2、第一列timestamp字段,如果不强制指定默认值或on update属性的话,就会默认设为DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP。

3、非第一列timestamp字段,如果不强制指定默认值,DEFAULT ‘0000-00-00 00:00:00’

4、往该列中插入null值,会自动转化为默认值;

explicit_defaults_for_timestamp=ON,则关闭timestamp default的特性:

1、如果没有被显示指定not null,则默认为null;

2、默认值也会是null而非CURRENT_TIMESTAMP;

3、如果指定了not null属性,inset式不指定该字段的值,strict sql_mode下,会报错。非strict sql_mode下插入’0000-00-00 00:00:00’;

需要仔细考虑下面的场景:

1、timestamp not null default CURRENT_TIMESTAMP,当explicit_defaults_for_timestamp由0转为1时会带来什么业务影响?

这样的转化,如果该timestamp字段有默认值,会造成原本insert 该timestamp字段value为null的语句会插入失败,影响业务;

2、datetime default null 转成 timestamp default CURRENT_TIMESTAMP,又会带来什么业务影响呢?

做这样的字段转化,会把原本该字段为null的值都转化为CURRENT_TIMESTAMP,如果历史数据多的化,这样的转化是非常耗资源的。同时还需考虑值的转变对业务带来的影响。

“MySQL 8.0 timestamp引发的问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 8.0 timestamp引发的问题怎么解决

本文链接: https://www.lsjlt.com/news/71788.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL 8.0 timestamp引发的问题怎么解决
    本篇内容介绍了“MySQL 8.0 timestamp引发的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
    99+
    2024-04-02
  • mysql的timestamp存在时区问题怎么解决
    本篇内容介绍了“mysql的timestamp存在时区问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2024-04-02
  • mysql的timestamp存在的时区问题怎么解决
    这篇文章主要讲解了“mysql的timestamp存在的时区问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql的timestamp存在的时...
    99+
    2024-04-02
  • MySQL之DATETIME与TIMESTAMP的时间精度问题怎么解决
    本篇内容介绍了“MySQL之DATETIME与TIMESTAMP的时间精度问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!date...
    99+
    2023-07-05
  • postgresql timestamp时间戳问题怎么解决
    这篇文章主要介绍“postgresql timestamp时间戳问题怎么解决”,在日常操作中,相信很多人在postgresql timestamp时间戳问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2023-07-05
  • MySQL索引失效问题怎么解决
    MySQL索引失效问题可能是由于索引选择不当、数据分布不均匀、查询条件不符合索引规则等原因造成的。解决这些问题可以尝试以下方法: ...
    99+
    2024-04-09
    mysql
  • MySQL驱动mysql-connector-java升级到8.0.X版本问题怎么解决
    这篇文章主要讲解了“MySQL驱动mysql-connector-java升级到8.0.X版本问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“My...
    99+
    2023-03-01
    mysql mysql-connector-java
  • 怎么解决RestTemplate使用不当引发的问题
    这篇文章主要讲解了“怎么解决RestTemplate使用不当引发的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决RestTemplate使用不当引发的问题”吧!背景系统: Spr...
    99+
    2023-06-25
  • vuex更新视图引发的问题怎么解决
    本篇内容主要讲解“vuex更新视图引发的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vuex更新视图引发的问题怎么解决”吧!场景第一次进入页面加载数据,数据不显示,点击某个按钮或者...
    99+
    2023-07-02
  • Mysql的timestamp时间戳详解及2038问题
    目录时间戳数据存取时间戳字段定义时间戳类型引发的异常时间戳类型和时间类型选择时间戳类型使用建议Timestamp和datetime的异同设置timestamp和date的自动更新时间2038问题解决方案时间戳是指格林威治...
    99+
    2023-04-27
    Mysql timestamp时间戳 MySQL 时间戳2038
  • android.enableD8.desugaring = false引发问题解决
    目录问题:大致的原因:关闭脱糖的操作问题: Kotlin升级引起的类找不到情况[其实跟Kotlin版本无关] java.lang.NoClassDefFoundError: Fail...
    99+
    2023-05-13
    android enableD8解决 android enableD8
  • MySQL中不等号索引问题怎么解决
    这篇文章主要介绍“MySQL中不等号索引问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL中不等号索引问题怎么解决”文章能帮助大家解决问题。在MySQL中,不等号<>在...
    99+
    2023-07-05
  • 怎么解决Oracle12c中空格引发的ORA-01516问题
    本篇内容介绍了“怎么解决Oracle12c中空格引发的ORA-01516问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读...
    99+
    2024-04-02
  • 一条sql语句所引发的问题怎么解决
    这篇文章主要介绍“一条sql语句所引发的问题怎么解决”,在日常操作中,相信很多人在一条sql语句所引发的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”一条sql语...
    99+
    2023-01-31
    sql
  • mysql中like索引失效问题怎么解决
    在MySQL中,LIKE索引失效的问题通常是由以下几个原因造成的: 通配符在开头:如果LIKE操作符的通配符(%)在搜索模式的开...
    99+
    2024-02-29
    mysql
  • 如何解决MySQL中因一个双引号错位引发的问题
    小编给大家分享一下如何解决MySQL中因一个双引号错位引发的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言最近经常碰...
    99+
    2024-04-02
  • SQLSERVER语句交错引发的死锁问题怎么解决
    这篇文章主要讲解了“SQLSERVER语句交错引发的死锁问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQLSERVER语句交错引发的死锁问题怎...
    99+
    2023-03-01
    sqlserver
  • 如何解决因@click.stop引发的bug问题
    这篇文章将为大家详细讲解有关如何解决因@click.stop引发的bug问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题在项目页面中使用 element popov...
    99+
    2024-04-02
  • 解决SecureRandom.getInstanceStrong()引发的线程阻塞问题
    目录1. 背景介绍2. 现象展示2.1 windows7下运行结果2.2 centos7下运行结果3. 现象分析3.1 linux阻塞分析3.2 windows下运行结果分析4. 结...
    99+
    2024-04-02
  • 怎么解决mysql的Warning问题
    这篇文章主要介绍“怎么解决mysql的Warning问题”,在日常操作中,相信很多人在怎么解决mysql的Warning问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作