【已解决】MySQL 不同版本的 timestamp字段的巨坑!

项目有个需求

要记录用户分享的时间,

分享完成后收取代币,进入倒计时,除非倒计时结束,否则期间的任何分享都不会再奖励代币。


然后我在别的项目组时用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啊……


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值