2

出于某种原因,当我向我的 Aurora 无服务器数据库集群 mysql 5.6, big int 列插入一个值时,它会在 16 位后四舍五入。

例子:

  • 734783792502575105 另存为 734783792502575100
  • 9223372036854775807 另存为 9223372036854776000

我的列定义为 -> bigint(20) unsigned NOT NULL。

unsigned BIGINT 不应该能够具有最大值 18446744073709551615 吗?

编辑:

更奇怪的是,我能够将 18446744073709551615 插入列中,但是当我尝试在插入后在表上运行常规选择时,我开始收到以下错误:“值 '18,446,744,073,709,551,615' 超出 java.lang 类型的有效范围。长”

我在 AWS 仪表板的查询编辑器中测试了查询,还通过 nodejs 的 aws RDSDataService 库测试了查询。

谢谢

4

1 回答 1

1

在自己遇到这个奇怪的问题后,我发现 serverless-mysql 中有一个设置可以强制 bigInt 进入字符串,这样就不会发生舍入错误。它在这个页面上mysql options

这是在 nodeJS 中设置 mysql 配置的片段:

import mysql from 'serverless-mysql';

export const db = mysql({
  config: {
    // left out the normal stuff,
    supportBigNumbers: true,
    bigNumberStrings: true,
  },
});
于 2022-02-15T18:51:52.937 回答