



























这是一个创建于 291 天前的主题,其中的信息可能已经有所发展或是发生改变。
MYSQL UPDATE 在很短的时间内更新相同的语句,就会有告警,导至事务失败,有没有人遇到这问题?
如:UPDATE `api_wallet` SET `credits`=`credits`+'1087.77', `cost`=`cost`+'151.23' WHERE `uid`='12';
Rows matched: 1 Changed: 1 Warnings: 1
mysqli_warning Object
(
[message] => Data truncated for column 'credits' at row 1
[sqlstate] => HY000
[errno] => 1265
)
1 JoeJoeJoe 2025 年 8 月 26 日 via iPhone看看 credits 的定义 |
3 Alucns 2025 年 8 月 26 日MYSQL 版本 8.4.0 |
4 Alucns 2025 年 8 月 26 日MYSQL 版本 8.4.5 |
5 hefish 2025 年 8 月 26 日我猜想是 文本转数字损失精度的问题 |
6 realpg 2025 年 8 月 26 日如果不是手写的代码 就换个靠谱点的 orm |
8 jorneyr 2025 年 8 月 26 日也是 MySQL 8 ,遇到过,同一个事务里多次更新同一条记录的同一个 int 字段报错 (延时一下就不报错了)。 |
9 phpfpm 2025 年 8 月 26 日最佳实践是别用 mysql 做算术题,你就当他是 kv 你 update 一个主键就行。 先查出来,加个锁,开个事务,提交数据 mysql 的 cpu 很值钱,你程序的 cpu 不值钱 否则你高频做整个事情 mysql 内部自己有悲观锁什么的不整死你才怪 |
10 clarkethan 2025 年 8 月 26 日有没有查过日志,引起警告的语句具体是什么,有没有可能你在有些语句里面,传入了不符合数据库字段需要的值,比如 1087.770 |
11 Alucns 2025 年 8 月 26 日感谢大家回复,我测试看看,谢谢! |
12 Alucns 2025 年 8 月 26 日@clarkethan 告警就是这个 Data truncated for column 'credits' at row 1 |
13 lovelylain 2025 年 8 月 26 日 via Androidcredits 没有 not null default ,update 前值为 null ? |
14 rekulas 2025 年 8 月 26 日不是很明显的溢出问题么? 你先改为 decimal(16,6) 测测 |
17 phpfpm 2025 年 8 月 27 日@xiangyuecn 第一遍查总得大概齐看下有没有余额吧,完成一些不需要写表的业务逻辑。 至于在事务里面要不要再次查或者 select for update 随你 (我就这么一说不要认真当伪代码了 hhh |
19 dajj 2025 年 8 月 27 日Data truncated for column 'credits' at row 1 你设置的值超过字段精度了 |
20 Alucns 2025 年 8 月 27 日UPDATE `api_wallet` SET `credits`=`credits`+'1087.77', `cost`=`cost`+'151.23' WHERE `uid`='12'; |
21 vone 2025 年 8 月 28 日MySQL 好像在事务未提交前写入的数据,如果你再读取的话好像不一定保证是 decimal(16,2)。 |
22 ca2oh4 2025 年 8 月 28 日说了金额不要存小数 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。