Postgres Bigint超出了范围



我正在发现一个带有PostgreSQL的新世界,但是在将Firebird 2.1数据库转换为PostgreSQL 9.3时,我遇到了EROFFORY ERROR

BIGINT out of range: 

我已经检查了导入语句的最小值和最大值,它们适合Bigint,并且可以导入,但是附件中的整个插入语句都给了我错误。我还对PGADMIN中的错误进行了回复。

表具有以下结构:

CREATE TABLE SomeTable
(
  id integer NOT NULL 
  n0 bigint NOT NULL DEFAULT 0,
  n1 bigint NOT NULL DEFAULT 0,
  n2 bigint NOT NULL DEFAULT 0,
  n3 bigint NOT NULL DEFAULT 0
  .
  .
  .
  n247 bigint NOT NULL DEFAULT 0,
  CONSTRAINT SomeTable_pkey PRIMARY KEY (id)
)

带有实际插入语句和表结构的文件,也提取了值

有什么建议?

实际错误错误:bigint超出范围* ** 错误 ** **

错误:bigint超出范围SQL状态:22003

更新我在此形式中使用语句

insert .... values ((1::int4),(2222222222::int8)....);

将其更改为

insert .... values (1,2222222222,....);

它有效。在我看来,Postgres中的一个漏洞。

update

查询是从NPGSQL 2.0准备好的语句形式的。在版本2.1中,该问题是固定的,效果很好 NPGSQL错误跟踪器带有问题

在您的SQL小提琴示例中此值超出范围:

select -9223372036854775808::int8;
ERROR:  bigint out of range

问题是它首先尝试将9223372036854775808转换为BigInt,然后更改其符号。如果您这样做

select (-9223372036854775808)::bigint;
         int8         
----------------------
 -9223372036854775808

最新更新