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

Nrg*_*zer 1 mysql decimal node.js

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

我的 SQL 查询非常简单:

SELECT SUM(`amount`) FROM `balances`;
Run Code Online (Sandbox Code Playgroud)

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

let mysql = require('mysql').createPool({
  host: global.dbconfig['dbhost'],
  database: global.dbconfig['dbname'],
  user: global.dbconfig['dbuser'],
  password: global.dbconfig['dbpass']
})
Run Code Online (Sandbox Code Playgroud)

gok*_*and 6

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

 supportBigNumbers: true
 bigNumberStrings: true
Run Code Online (Sandbox Code Playgroud)

然后就变成了:

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,
})
Run Code Online (Sandbox Code Playgroud)

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