我读得足以知道当字符串包含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
答案 0 :(得分:1)
此消息表示您的字符串数据中包含空字符"\0"
。
我无法找到一个权威的引用(请告诉我你是否有)。
我们在https://www.postgresql.org/message-id/alpine.BSO.2.00.0906031639270.2432%40leary.csoft.net
在https://www.postgresql.org/docs/9.3/static/functions-string.html
允许所有其他字符。
答案 1 :(得分:0)
日期类型与目标类型不匹配。例如int4-> int8