NodeJS:MySQL返回不准确的十进制值

问题描述 投票:1回答:1

我有一个存储十进制值的MySQL数据库(DECIMAL(32,12))。当我使用HeidiSQL选择值时,值正确显示(例如15922.638440778302)。但是当我使用MySQL绑定(https://github.com/mysqljs/mysql)在NodeJS中做同样的事情时,它显示我15922.638440778303。

我的SQL查询非常简单:

SELECT SUM(`amount`) FROM `balances`;

知道什么可以导致差异吗?也许我需要在NodeJS中的MySQL初始化期间指定精度?目前,我没有指定登录凭据以外的任何内容:

let mysql = require('mysql').createPool({
  host: global.dbconfig['dbhost'],
  database: global.dbconfig['dbname'],
  user: global.dbconfig['dbuser'],
  password: global.dbconfig['dbpass']
})
mysql node.js decimal
1个回答
3
投票

将以下行添加到mysql配置中。

 supportBigNumbers: true
 bigNumberStrings: true

然后它变成:

let mysql = require('mysql').createPool({
  host: global.dbconfig['dbhost'],
  database: global.dbconfig['dbname'],
  user: global.dbconfig['dbuser'],
  password: global.dbconfig['dbpass'],
  supportBigNumbers: true,
  bigNumberStrings: true,
})

有关连接选项的更多信息:docs

© www.soinside.com 2019 - 2024. All rights reserved.