我有一个存储十进制值的 MySQL 数据库 (DECIMAL(32, 12))。 当我使用 HeidiSQL 选择值时,值显示正确(例如 15922.638440778302)。但是当我在 NodeJS 中使用 MySQL 绑定(bind) ( https://github.com/mysqljs/mysql ) 执行相同操作时,它会显示 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
配置中。
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
关于mysql - Node : MySQL returns inaccurate decimal values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48028240/