起因
A:发现一个bug
B:什么bug
A:我们项目中(测试环境)有个接口时间会自动跟着更新时间变动,但是在本地测试是好的
B:详细描述下呢
A:有个发布动态的功能,其中有发布时、更新时间、新闻时间三个字段,当在后台通过审核后,新闻时间会跟着更新时间一起变
B:有没有检查代码有什么不同呢
A:检查过了,本地跟线上的代码版本一致
B:有没有考虑过哪里出了问题
A:看一下线上的数据表吧,感觉数据表有问题
B:当时更新数据表是跟本地同步的啊,不能出问题啊,等我有时间看下吧
解决过程
由于当时忙,想了下,没想到啥原因,简单看了下代码,确实没问题,暂时放一放了,晚上找到运维看了下线上数据库
1 | 时间字段 timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
what??? 不知道怎么这个字段加了在更新的时候修改为当前时间,今后要注意这种小细节,好在这次找bug的时间没有很长
总结
当把数据表字段设置成 dafault CURRENT_TIMESTAMP 会在数据插入的时候,自动设置成当前时间
数据表中时间字段更新的方法
在代码中更新字段
设置字段的Extra列on update CURRENT_TIMESTAMP
设置mysql定时任务