我收到以下Postgres错误:
错误:类型字符变化(1024)
的值太长
令人不快的陈述是:
INSERT INTO integer_array_sensor_data (sensor_id, "time", status, "value")
VALUES (113, 86651204, 0, '{7302225, 7302161, 7302593, 730211,
... <total of 500 values>... 7301799, 7301896}');
表格:
CREATE TABLE integer_array_sensor_data (
id SERIAL PRIMARY KEY,
sensor_id INTEGER NOT NULL,
"time" INTEGER NOT NULL,
status INTEGER NOT NULL,
"value" INTEGER[] NOT NULL,
server_time TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW()
);
研究PostgreSQL文档没有提到有关数组大小限制的任何内容。
知道如何解决这个问题吗?
答案 0 :(得分:3)
问题不是来自Array
本身,而是来自Varchar String
声明Insert
中的数组值。某些驱动程序键入字符串文字为varchar(1024)
导致该问题。
而不是
'{1,2,3}'
尝试使用
ARRAY[1,2,3]
否则您可以尝试将字符串的类型声明为TEXT
(无限制)
'{1,2,3}'::text
答案 1 :(得分:0)
我开始理解我的问题,虽然我还没有找到解决方案。问题是字符串某处库级别存在限制。我实际上使用的是pqxx,你不能拥有超过1024个字符的字符串。我已经接受了纪尧姆F.的回答,因为他认为这一点,但铸造不起作用。一旦找到解决方案,我就会编辑我的回复,以便人们知道该怎么做。
我只是尝试了准备好的陈述,他们也有同样的限制。
解决方法是使用COPY或其pqxx绑定pqxx:tablewriter。