300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 关于mysql字段时间类型timestamp默认值为当前时间问题

关于mysql字段时间类型timestamp默认值为当前时间问题

时间:2019-07-03 19:24:10

相关推荐

关于mysql字段时间类型timestamp默认值为当前时间问题

数据库|mysql教程

MySQL

数据库-mysql教程

今天把应用部署到AWS上发现后台修改内容提交后程序报错,经过排查发现是更新数据的时候,有张数据表中的一个timestamp类型的字段默认值变成了”0000-00-00 00:00:00.000000″格式,导致解析失败造成的。

jsp实现投票系统源码,vscode常用操作,ubuntu查看内网ip命令,tomcat777,sqlite 获取表格式,全景图片的插件,前端工具三大框架,开源爬虫编程基础,html 转换php,seo竞价托管seo公司,卖源码网站的模板,传奇类网页游戏架设,php 企业官网模板下载地址,cms列表静态页面生成器,管理系统vs,外卖类小程序开源模板lzw

在mysql该字段的创建语句如下

网页游戏手机平台源码下载,如何调出ubuntu桌面,为什么tomcat8闪退,python淘宝爬虫验证,宝塔面板PHP安装错了怎么删,seo静态界面lzw

`XXX` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 正常情况下 应该是当前数据更改的时间格式

微信公众号导航源码下载,ubuntu磁盘大小不对,单机游戏打爬虫,php内,seo字体排名lzw

因为在本地开发环境测试过,没有该问题,应用环境一直,唯一不同的是,生产环境数据库用的是AWS的RDS的mysql,经过对错误信息的搜索,大致应该是mysql参数配置的问题。

看了下mysql官方文档

By default, the first TIMESTAMP column has both DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP if neither is specified explicitly。

很多时候,这并不是我们想要的,如何禁用呢?

1. 将“explicit_defaults_for_timestamp”的值设置为ON。

2. “explicit_defaults_for_timestamp”的值依旧是OFF,也有两种方法可以禁用

1> 用DEFAULT子句该该列指定一个默认值

2> 为该列指定NULL属性。

mysql> show variables like \%explicit_defaults_for_timestamp%;+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| explicit_defaults_for_timestamp | OFF |+---------------------------------+-------+row in set (0.00 sec)

开发环境explicit_defaults_for_timestamp 的值是OFF

比对了下RDS中mysql的参数,发现这个参数值为0,因为rds中mysql的默认参数组是不允许修改的,所以创建个参数组,会默认把default的参数组继承过来,当时并不知道这里的0和1是怎么对应on和off的,所以就把值改成了1.然后重启rds。

此时发现就不会有该错误了。

将rds中mysql的参数改成如下情况 完美解决

explicit_defaults_for_timestamp = 1

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。