Postgres:org.postgresql.util.PSQLException:错误:消息中留下的数据不足

问题描述 投票:0回答:4

我读了足够多的书,知道当字符串包含一些 Postgres 不喜欢的字符时,就会发生这种情况。但是,我不知道是否有办法在写入字符串之前验证它们。特别是,我正在进行批量插入。

insert into foo(col1,col2,col3) values ('a',2,3),('b',4,0),....

我的数据库设置如下:

   Name     | Owner  | Encoding | Collate | Ctype | Access privileges
------------+--------+----------+---------+-------+-------------------
 stats      | me     | UTF8     | C       | C     |

定期地,一些坏字符串会进入并且整个插入将失败(例如

change���=
)。我在单个插入中批量处理了相当多的值,因此我希望理想地验证字符串而不是轰炸整个插入。是否有 Postgres 插入中不允许使用的字符的列表?

使用 postgresql-jdbc 9.1-901.jdbc4

postgresql-9.1
4个回答
8
投票

日期类型与目标类型不匹配。例如 int4->int8


5
投票

此消息意味着您的字符串数据中有一个空字符

"\0"

我找不到对此的权威引用(如果你有,请告诉我)。

允许使用所有其他字符。


0
投票

就我而言,我正在从 sql 文件加载查询。问题是由于编码造成的。 我把它改成UTF-8就可以了。希望有帮助!


0
投票

这意味着类型不匹配。 就我而言,我试图将 int 插入到应该是 int64 的位置。

© www.soinside.com 2019 - 2024. All rights reserved.