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

Yan*_* K. 5 postgresql-9.1

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

\n\n
insert into foo(col1,col2,col3) values ('a',2,3),('b',4,0),....\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的数据库设置如下:

\n\n
   Name     | Owner  | Encoding | Collate | Ctype | Access privileges\n------------+--------+----------+---------+-------+-------------------\n stats      | me     | UTF8     | C       | C     |\n
Run Code Online (Sandbox Code Playgroud)\n\n

定期地,一些坏字符串会进入并且整个插入将失败(例如change\xc3\xaf\xc2\xbf\xc2\xbd\xc3\xaf\xc2\xbf\xc2\xbd\xc3\xaf\xc2\xbf\xc2\xbd=)。我在单个插入中批量处理了相当多的值,因此我希望理想地验证字符串而不是轰炸整个插入。是否有 Postgres 插入中不允许使用的字符的列表?

\n\n

使用 postgresql-jdbc 9.1-901.jdbc4

\n

小智 7

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


Ric*_*ich 5

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

我找不到这方面的权威引用(如果你有的话请告诉我)。

允许使用所有其他字符。

  • 我正在使用 .net 中的 npgsql 运行一堆更新查询。字符串的来源是我从网上抓取的一些文本,我收到了这个错误。我的解决方案是使用正则表达式去除非ascii字符(包括\0,技术上是ascii字符):Regex.Replace(sql.ToString, "[^\u0001-\u007F]+", String.Empty) (2认同)