Postgres BIGINT超出范围

时间:2014-03-09 00:46:09

标签: sql postgresql npgsql

我正在发现PostgreSQL的新世界但是在将Firebird 2.1数据库转换到PostgreSQL 9.3时我遇到了以下错误

BIGINT out of range: 

我已经从import语句检查了Min和Max值,它们适合Bigint并且可以导入,但是附件中的整个insert语句给了我错误。我还在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)
)

File with actual insert statement and table structure, also extracted values

有什么建议吗?

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

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

更新 我正在使用这种形式的陈述

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

将其更改为

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

有效。 在我看来,像Postgres中的一个小痘痘。

更新

查询是来自NPGSQL 2.0预编译语句的表单。 在2.1版本中,问题已修复并且正常运行  NPGSQL bug tracker with the issue

1 个答案:

答案 0 :(得分:9)

SQL Fiddle示例中的此值超出范围:

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

问题是它首先尝试将9223372036854775808转换为bigint,然后再更改其符号。它可以工作

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