mysql报错103(解决Mysql报Invalid default value for“operate_time”错误的问题)
mysql报错103
解决Mysql报Invalid default value for“operate_time”错误的问题在数据库中执行建表语句
|
CREATE TABLE `sys_acl` ( `id` int (11) NOT NULL AUTO_INCREMENT COMMENT '权限id' , `code` varchar (20) NOT NULL DEFAULT '' COMMENT '权限码' , ` name ` varchar (20) NOT NULL DEFAULT '' COMMENT '权限名称' , `acl_module_id` int (11) NOT NULL DEFAULT '0' COMMENT '权限所在的权限模块id' , `url` varchar (100) NOT NULL DEFAULT '' COMMENT '请求的url, 可以填正则表达式' , `type` int (11) NOT NULL DEFAULT '3' COMMENT '类型,1:菜单,2:按钮,3:其他' , `status` int (11) NOT NULL DEFAULT '1' COMMENT '状态,1:正常,0:冻结' , `seq` int (11) NOT NULL DEFAULT '0' COMMENT '权限在当前模块下的顺序,由小到大' , `remark` varchar (200) DEFAULT '' COMMENT '备注' , `operator` varchar (20) NOT NULL DEFAULT '' COMMENT '操作者' , `operate_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间' , `operate_ip` varchar (20) NOT NULL DEFAULT '' COMMENT '最后一个更新者的ip地址' , PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; |
报Invalid default value for 'operate_time'错误
查资料发现,mysql5.6以后才支持datetime类型,所以把datetime换为timestamp成功解决
datetime和timestamp区别不是特别大,主要区别有下面两点
1、两者的存储方式不一样
对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出。
2、两者所能存储的时间范围不一样
timestamp所能存储的时间范围为:'1970-01-01 00:00:01.000000' 到 ‘2038-01-19 03:14:07.999999'。
datetime所能存储的时间范围为:'1000-01-01 00:00:00.000000' 到 ‘9999-12-31 23:59:59.999999'。
总结:
TIMESTAMP和DATETIME除了存储范围和存储方式不一样,没有太大区别。
当然,对于跨时区的业务,TIMESTAMP更为合适。
参考链接:MYSQL-datatime和timestamp的区别
补充:mysql 出现 "1067 - Invalid default value for 'UPDATE_TIME' " 错误提示的解决办法
由于 tmp_wrh_1 的字段UPDATE_TIME 的字段类型是 timestamp ,默认值是:'0000-00-00 00:00:00'
即:
|
`UPDATE_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间' ; |
在对这个表进行操作的时候,
如:
|
alter table tmp_wrh_1 MODIFY column BUSINESS_TYPE varchar (5) comment 'hhr-服务费提现' ; --执行失败 |
会出现错误提示: 1067 - Invalid default value for 'UPDATE_TIME'
问题分析:
因为timestamp类型取值范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59,
所以必须得把字段UPDATE_TIME 的默认值修改成:1970-01-01 00:00:00 到 2037-12-31 23:59:59 之间的值,
发现 默认值必须在1970-01-01 10:00:00 以后才修改成功,不知道什么原因!
问题解决:
|
alter table tmp_wrh_1 alter column update_time drop default ; alter table tmp_wrh_1 alter column UPDATE_TIME set default '1970-01-01 10:00:00' ; alter table tmp_wrh_1 MODIFY column BUSINESS_TYPE varchar (5) comment 'hhr-服务费提现' ; --执行成功 |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持开心学习网。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/a1275302036/article/details/80278949
- mysql怎么看脱机数据(MYSQL电话号码,身份证数据脱敏的实现)
- mysql的连接池名称如何查看(如何使用mysqladmin获取一个mysql实例当前的TPS和QPS)
- mysql与oracle如何直接连接(Oracle更换为MySQL遇到的问题及解决)
- mysql8.0.23的安装步骤(mysql 8.0.22 下载安装配置方法图文教程)
- mysql5.7.24rpm安装(MySQL系列-YUM及RPM包安装v5.7.34)
- mysql事件教程(关于MySQL报警的一次分析处理详解)
- phpmysql网站开发入门与提高(PHP+MySQL+sphinx+scws实现全文检索功能详解)
- iis6双php版本的设置(云主机IIS7.5支持PHP5.3以上版本和MYSQL)
- mysql创建表存在哪里(MySQL的表空间是什么)
- mysql设置updatetime自动更新(mysql 实现添加时间自动添加更新时间自动更新操作)
- thinkphp5怎么设置默认返回(thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结)
- MySQL中查询数据库的大小
- mysql新增字段语句(关于Mysql update修改多个字段and的语法问题详析)
- mysql多表连接优化(浅谈Mysql多表连接查询的执行细节)
- mysql导出数据的方法
- 宝塔mysql怎么设置优化(宝塔面板mysql内存占用高如何优化)
- 怎么快速学好英语(怎么快速学好英语初中)
- 中国留学生都是富二代吗()
- 我们现在吃的苹果是哪里来的 原来现代苹果引入中国仅有一百多年(我们现在吃的苹果是哪里来的)
- 买绿宝不能只挑黄绿色 菜农教你3招挑,个个皮薄肉脆,香甜爆汁(买绿宝不能只挑黄绿色)
- 大果肉搭配薄瓜皮, 绿宝 脆甜爽口,不愧是甜瓜中的 佼佼者(大果肉搭配薄瓜皮)
- 河南尉氏县因地制宜发展果蔬种植 水坡镇绿宝甜瓜变 金瓜(河南尉氏县因地制宜发展果蔬种植)
热门推荐
- zabbix5.0源码安装(nginx的zabbix 5.0安装部署的方法步骤)
- 浏览器怎么显示javascript页面(JavaScript如何通过userAgent判断几个常用浏览器详解)
- js开发工具图解(浅谈前端JS沙箱实现的几种方式)
- datatable和list的转换
- 程序员职业该如何规划
- 在html中使用javascript实例代码(原生 JS+CSS+HTML 实现时序图的方法)
- filezilla搭建ftp服务器英文(客户端使用FileZilla连接ftp服务器过程图解)
- mysql的存储方法(MySQL中的binary类型使用操作)
- php使用面向对象如何写好代码(PHP面向对象程序设计模拟一般面向对象语言中的方法重载overload示例)
- 阿里云ecs负载均衡(阿里云ECS的CPU100%排查)