mysql返回不正确的bigint结果,非常奇怪的错误

Posted

技术标签:

【中文标题】mysql返回不正确的bigint结果,非常奇怪的错误【英文标题】:Mysql returning incorrect bigint result by one, very strange error 【发布时间】:2015-10-06 15:38:54 【问题描述】:

我真的不知道这里发生了什么。我有一个如下所示的数据库表:

有了这些数据:

当我在 phpmyadmin 中运行此查询 SELECT * FROM game WHERE id = 4 时,我会按预期返回此结果:

但是当我通过 rest api (其中 gameId = 4) 对其进行查询时

var query = connection.query("SELECT * FROM game WHERE id = ? ",[game.gameId],function(err,rows) 

我得到了这个结果

其中 adminId 因某种原因被减一。我真的不知道发生了什么。我曾尝试将桌子放下并重新设置,以前有没有人经历过这种情况?或者知道有什么问题吗?这很令人沮丧!谢谢

【问题讨论】:

【参考方案1】:

javascript 可以安全表示的最大整数是Number.MAX_SAFE_INTEGER,即 2^53 - 1。您的值大于该值,这会导致一些位丢失。

node-mysql 具有将BIGINTs 解析为字符串的supportBigNumbersbigNumberStrings 选项。

var connection = mysql.createConnection(
                            supportBigNumbers: true,
                            bigNumberStrings: true
                 );

【讨论】:

哇,我感激不尽!非常好的帮助,谢谢。

以上是关于mysql返回不正确的bigint结果,非常奇怪的错误的主要内容,如果未能解决你的问题,请参考以下文章

mysql bigint ,int , smallint,tinyint 的范围

在 VIEW 中使用的 Mysql 函数不会返回正确的结果。

使用pgAdmin 4时,bigint不正确地插入JSONB列

MySQL ORDER BY 根据日期时间查询返回不正确的结果

SQL子查询返回奇怪的结果

MYSQL 查询不返回 BETWEEN 的结果,但它返回小于和等于子查询的结果