WordPress执行UPDATE更新字段时数值自动翻倍问题如何解决
可能的原因及排查方案
- 代码逻辑重复执行
你的更新语句所在的代码块大概率被触发了两次:常见的情况是WordPress动作钩子重复挂载(比如同一个add_action注册了两次相同的回调)、页面请求触发了两次(比如意外重定向、AJAX请求重复发送、REST接口被重复调用)。你可以在更新语句前加一行日志写入逻辑,比如file_put_contents('sql_log.txt', date('Y-m-d H:i:s').'执行更新'.PHP_EOL, FILE_APPEND);,触发一次操作后看日志里是不是有两条相同的记录即可验证。 - 数据库设置了触发累加的触发器
你可以直接登录数据库命令行或者可视化工具,手动执行你写的更新语句:UPDATE wp_users SET teacher_money = teacher_money + 2 WHERE ID = 2,如果直接执行也出现翻倍的情况,基本可以确定是wp_users表上设置了UPDATE类型的触发器,触发器内又执行了一次teacher_money的累加。可以执行SHOW TRIGGERS LIKE 'wp_users';查询当前表绑定的触发器,删除多余的累加触发器即可。 - 金额字段类型选型错误(低概率)
float属于浮点型,存储金额本身就存在精度丢失的问题,虽然不会刚好出现翻倍的规律,但建议你先把teacher_money字段改为定点数类型DECIMAL(10,2),排除精度干扰。 - 数据库中间件/事务重复提交
如果你用了读写分离、SQL代理等中间件,或者代码内开启了数据库事务后重复执行了提交逻辑,也可能导致单条SQL被重复执行。可以先跳过中间件直连数据库测试,排查是不是中间层的问题。
内容的提问来源于stack exchange,提问作者Errorj404
相关产品推荐
相关产品推荐

