插入的 BIGINT 与 SQL 数据库中显示的不同

Posted

技术标签:

【中文标题】插入的 BIGINT 与 SQL 数据库中显示的不同【英文标题】:Inserted BIGINT is not the same as the one Shown in SQL DataBase 【发布时间】:2021-07-05 10:05:35 【问题描述】:

我正在编写一个 Discord 机器人和 Twitch 机器人。 我目前正在编写一个函数来将用户 Twitch 和 Discord ID 保存在数据库中。

这是我目前的功能:

add_discord(twitch_id, discord_id) 
    this.get_user(twitch_id)
        .then((user_data) => 
            this.db.query(`UPDATE userdata SET discord_id = $discord_id WHERE identity_id = $user_data[0]`)
        )

我为每个用户使用一个唯一的identity_id。 我有控制台记录discord_id,这是我正确的 Discord ID。但是一旦入库,数字就变了。

我的不和谐 ID 是 522855210926735422

但是数据库中显示的数字是522855210926735400

(22关正确值)

我正在为discord_id 使用 BIGINT。我之前也遇到过类似的问题,我之前通过将其存储为 VARCHAR 而不是 BIGINT 来修复它(我认为)。

任何建议都会很棒!

(这是来自查询的响应)

OkPacket 
  fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '(Rows matched: 1  Changed: 0  Warnings: 0',
  protocol41: true,
  changedRows: 0

【问题讨论】:

很遗憾,我没有答案,但是有没有办法可以在执行时打印数据库查询?所以也许在 ORM 或你正在使用的任何东西中;可能在 node_modules 中 Discord ID 值太大,无法在 javascript 中视为数字。 我一直在将输入的值与数据库中的值进行比较,但看不到任何相关性 Pointy,JavaScript 可以处理的最大值是多少? 【参考方案1】:

原来discord_id 对于 JavaScript 来说太大了。所以 JS 将最后一位四舍五入(因此以 00 结尾)。所以我想我只会让 discord_id 成为数据库中的字符串

【讨论】:

以上是关于插入的 BIGINT 与 SQL 数据库中显示的不同的主要内容,如果未能解决你的问题,请参考以下文章

mysql bigint(20) 20指的是啥意思

sparksql写入表中bigint类型显示null

sql server数据库中 smallint, int ,bigint ,tinyint的区别与长度

如何在准备好的语句php中的不同行中插入多条记录

为啥在将 bigint 数插入 bigint 列时出现算术溢出错误?

MySQL整数数据类型bigint