项目有个需求
要记录用户分享的时间,
分享完成后收取代币,进入倒计时,除非倒计时结束,否则期间的任何分享都不会再奖励代币。
然后我在别的项目组时用timestamp字段用的很顺,想当然就设了一个这个字段,用来记录用户点击分享的时间点。用户分享,我就检查一下距离上次分享的时点是否超过4小时。
但诡异的事情发生了,有反馈说,在从未分享过的情况下,点击分享没有收到代币,就进入了倒计时。
我看了一下,很奇怪,为什么用户分享时间会变动,明明用户在这之前从未分享过啊?排查了很久代码,依然没有找到误改分享时间的sql!
后来网上查到一句话,提醒了我:
只要设置timestamp字段,mysql就会在每次记录发生变动的时候,自动修改该timestamp字段的时间为记录变动的时间
不对啊!以前做开发的时候,timestamp并没有表现出这样的特性!线下测试的时候也没问题。
我意识到可能是版本的问题,赶紧去查看了MySQL线上线下的版本,这才发现巨坑啊!
线上:
mysql Ver 14.14 Distrib 5.1.73
线下:
mysql Ver 14.14 Distrib 5.7.9
Distrib的版本居然差这么多!
所以timestamp字段会表现出完全不同的性质。
看来得做一做线上下的版本统一了,否则本地的好代码,拉到线上就是bug啊……