我正在发现一个带有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