【发布时间】:2017-08-29 01:56:58
【问题描述】:
将客户端从 MySQL 5.4 升级到 5.7 后,我开始收到“BIGINT UNSIGNED value is out of range...”错误。我编辑了 my.cnf 并设置了 sql_mode = "NO_UNSIGNED_SUBTRACTION" 并使用 SHOW VARIABLES 来确保它确实使用了该模式。这确实解决了应用程序中的初始问题,但今天 unsigned int 列抛出相同的错误(BTW 库存为 2)...
UPDATE table SET inventory = inventory - 1
我不明白为什么,因为我认为新的 sql_mode 会将行为恢复到 5.5 之前的版本?我不想为了使简单的算术工作而开始在我的语句中转换所有内容,所以我认为的逻辑解决方案是将我所有的无符号整数列转换为有符号整数,但主自动增量键除外。
这是避免这些超出范围错误的最佳解决方案吗?
【问题讨论】:
标签: mysql integer-overflow unsigned-integer