我正面临一个奇怪的错误。我在Postgresql中有一个表text
字段"txtj"
。我还有一个用以下函数填充此表的函数:
INSERT INTO "precomputed" ("stmt","param","slice","txtj","crea","exp")
VALUES (statement_name,parametr,sliice,textj,creation,expiration);
当"txtj"
的字符长度最多为4681时,该字段将正确填充。但是,如果它有更多字符,则该字段留空,不会引发错误消息。我可以通过查看子字符串来找到这个数字:
textj := substring(textj from 0 for 4681);
为什么呢?文本字段的长度是否有限制?我的textj包含大约7500个字符。我该如何解决这个问题
更新
我可以使用以下脚本(我在Windows 7下)从pgAdmin III的SQL控制台复制此问题:
CREATE TABLE IF NOT EXISTS "test" (i integer, ttt text);
CREATE OR REPLACE FUNCTION fill_test()
RETURNS void AS $$
DECLARE
ffill text = '';
BEGIN
TRUNCATE "test";
FOR i IN 0..250 LOOP
INSERT INTO "test" VALUES ((i*20),ffill);
ffill := ffill || '01234567890123456789';
END LOOP;
END; $$
LANGUAGE plpgsql;
SELECT fill_test();
SELECT * FROM "test" ORDER BY "i";
4680以上,这些字段是空的......
更新II
select version()
返回:
"PostgreSQL 9.2.6, compiled by Visual C++ build 1600, 32-bit"
pgAdmin的版本:1.16.1
答案 0 :(得分:1)
对于记录,Postgresql方面没有错误。我已经设法使用连接到数据库的小节点应用程序正确检索字段值。
我将此答案作为其他人的信息。根据jjanes的说法,问题不会发生在9.3.2 / 1.18.1中。