我无法在我的postgres数据库中插入null值,其数据类型为bytea(blob)。这是我的java代码片段:
testdb=# \d+ plan
Table "public.plan"
Column | Type | Modifiers | Storage | Stats target | Description
-------------+-------+-----------+----------+--------------+-------------
description | bytea | | extended | |
Has OIDs: no
bytea列是可以为空的列。以下是表格说明。
{{1}}
我收到以下异常 java.sql.BatchUpdateException:批处理项11 INSERT INTO public.plan(description)VALUES(NULL)已中止。调用getNextException以查看原因。
答案 0 :(得分:3)
Postgres有两种不同的“BLOB”类型:bytea
,它基本上是SQL标准定义为BLOB
的类型。而“大对象”或多或少是二进制存储的“指针”(它仍存储在数据库中)。
Postgres JDBC总是将“大对象”视为等同于BLOB
(我从未理解过),因此ps.setNull(++index, java.sql.Types.BLOB);
使驱动程序认为您正在处理“大对象”(又名“oid”)专栏。
要解决此问题,请使用
ps.setNull(++index, Types.OTHER);
或者您可以使用:
ps.setObject(++index, null);
答案 1 :(得分:0)
这对我也很有用:
ps.setNull(++index, Types.BINARY);