CloudFog API Gateway

Limited Time

200+ AI Models Integration Hub

Claim Offer Now
Resolvedmysql

MySQL unsigned bigint 减法查询报错 1690:如何修复?😫

技术控David

8/27/2025

40 views1 likes

救命啊!MySQL这个unsigned bigint的问题快把我逼疯了!😫 我在做一个简单的减法查询,结果报了个1690错误,完全摸不着头脑...

我的表结构是这样的:

-- 表里有个STEP_ID列,是bigint unsigned类型 -- 其他列不重要就没贴出来

数据长这样:

-- 就一行数据:Name='aaa', STEP_ID=202001

然后我执行这个超简单的查询:

SELECT `NAME`, 202000 - STEP_ID FROM my_table WHERE `Name` = 'aaa';

结果MySQL直接炸了:Error 1690 - BIGINT UNSIGNED值超出范围!

最诡异的是,如果我手动把STEP_ID的值写死,查询就完全正常:

SELECT `NAME`, 202000 - 202001 FROM my_table WHERE `Name` = 'aaa'; -- 这样就没问题,但用字段名就不行,太魔幻了!

我已经试了所有能想到的CAST组合,全!都!失!败!了!💢

-- 试了把右边转unsigned SELECT `NAME`, 202000 - CAST(STEP_ID AS UNSIGNED)... -- 试了把左边转unsigned SELECT `NAME`, CAST(202000 AS UNSIGNED) - STEP_ID... -- 甚至两边都转 SELECT `NAME`, CAST(202000 AS UNSIGNED) - CAST(STEP_ID AS UNSIGNED)... -- 绝望到开始嵌套CAST SELECT `NAME`, CAST((CAST(202000 AS UNSIGNED) - STEP_ID) AS UNSIGNED)...

这明明就是个简单的减法啊,MySQL你至于吗?!😭 项目deadline快到了,求大佬救救孩子!

PS:我用的MySQL 8.0,如果这是个bug的话我就要考虑降级了...或者有没有什么神奇的配置能解决这个问题?

1 Answers

C

CoderDavid

8/27/2025

Best Answer10

Answer #1 - Best Answer

CloudFog API Gateway 🔥 New User Special

💥 New User Offer: Get $1 Credit for ¥0.5

Claim Offer Now