我用:
制作了一张桌子create table data_ids (id BIGINT(20) unsigned AUTO_INCREMENT PRIMARY KEY, data_id BIGINT(20) unsigned);
我添加了一行,当我
时SELECT * FROM data_ids;
+----+--------------------+
| id | data_id |
+----+--------------------+
| 1 | 260846479567093761 |
+----+--------------------+
正如我所料,这是我放入的信息
但是当我跑步时
pool.query(`SELECT * from data_ids`, function(err, rows, fields) {
if (err) {
console.log(err);
} else {
console.log(rows);
}
});
[ RowDataPacket {
id: 1,
data_id: 260846479567093760 } ]
这到底是怎么回事?为什么data_id发生了变化?
答案 0 :(得分:0)
By default mysql
will automatically cast values to an appropriate JavaScript type。对于数字类型,它将转换为JavaScript编号。
这个问题是JavaScript只能准确表示最多Number.MAX_SAFE_INTEGER
(9007199254740991)的整数,并且您的列值超过此最大值。您可以通过在连接中设置typeCast: false
或查询config 或来禁用自动类型转换,您可以提供自己的功能,根据需要转换值。