解决Mysql报Invalid default value for ''operate_time''错误的问题
在数据库中执行建表语句
CREATETABLE`sys_acl`( `id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'权限id', `code`varchar(20)NOTNULLDEFAULT''COMMENT'权限码', `name`varchar(20)NOTNULLDEFAULT''COMMENT'权限名称', `acl_module_id`int(11)NOTNULLDEFAULT'0'COMMENT'权限所在的权限模块id', `url`varchar(100)NOTNULLDEFAULT''COMMENT'请求的url,可以填正则表达式', `type`int(11)NOTNULLDEFAULT'3'COMMENT'类型,1:菜单,2:按钮,3:其他', `status`int(11)NOTNULLDEFAULT'1'COMMENT'状态,1:正常,0:冻结', `seq`int(11)NOTNULLDEFAULT'0'COMMENT'权限在当前模块下的顺序,由小到大', `remark`varchar(200)DEFAULT''COMMENT'备注', `operator`varchar(20)NOTNULLDEFAULT''COMMENT'操作者', `operate_time`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'最后一次更新时间', `operate_ip`varchar(20)NOTNULLDEFAULT''COMMENT'最后一个更新者的ip地址', PRIMARYKEY(`id`) )ENGINE=InnoDBAUTO_INCREMENT=11DEFAULTCHARSET=utf8;
报Invaliddefaultvaluefor'operate_time'错误
查资料发现,mysql5.6以后才支持datetime类型,所以把datetime换为timestamp成功解决
datetime和timestamp区别不是特别大,主要区别有下面两点
1、两者的存储方式不一样
对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出。
2、两者所能存储的时间范围不一样
timestamp所能存储的时间范围为:'1970-01-0100:00:01.000000'到‘2038-01-1903:14:07.999999'。
datetime所能存储的时间范围为:'1000-01-0100:00:00.000000'到‘9999-12-3123:59:59.999999'。
总结:
TIMESTAMP和DATETIME除了存储范围和存储方式不一样,没有太大区别。
当然,对于跨时区的业务,TIMESTAMP更为合适。
参考链接:MYSQL-datatime和timestamp的区别
补充:mysql出现"1067-Invaliddefaultvaluefor'UPDATE_TIME'"错误提示的解决办法
由于tmp_wrh_1的字段UPDATE_TIME的字段类型是timestamp,默认值是:'0000-00-0000:00:00'
即:
`UPDATE_TIME`timestampNOTNULLDEFAULT'0000-00-0000:00:00'COMMENT'更新时间';
在对这个表进行操作的时候,
如:
altertabletmp_wrh_1MODIFYcolumnBUSINESS_TYPEvarchar(5)comment'hhr-服务费提现';--执行失败
会出现错误提示:1067-Invaliddefaultvaluefor'UPDATE_TIME'
问题分析:
因为timestamp类型取值范围:1970-01-0100:00:00到2037-12-3123:59:59,
所以必须得把字段UPDATE_TIME的默认值修改成:1970-01-0100:00:00到2037-12-3123:59:59之间的值,
发现默认值必须在1970-01-0110:00:00以后才修改成功,不知道什么原因!
问题解决:
altertabletmp_wrh_1altercolumnupdate_timedropdefault; altertabletmp_wrh_1altercolumnUPDATE_TIMEsetdefault'1970-01-0110:00:00'; altertabletmp_wrh_1MODIFYcolumnBUSINESS_TYPEvarchar(5)comment'hhr-服务费提现';--执行成功
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。