节点mysql数据的结果发生了变化

时间:2017-01-10 19:56:59

标签: mysql node.js npm

我用:

制作了一张桌子
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发生了变化?

1 个答案:

答案 0 :(得分:0)

By default mysql will automatically cast values to an appropriate JavaScript type。对于数字类型,它将转换为JavaScript编号。

这个问题是JavaScript只能准确表示最多Number.MAX_SAFE_INTEGER(9007199254740991)的整数,并且您的列值超过此最大值。您可以通过在连接中设置typeCast: false或查询config 来禁用自动类型转换,您可以提供自己的功能,根据需要转换值。