Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 无法在postgres的bytea字段中插入null_Postgresql_Jdbc_Blob - Fatal编程技术网

Postgresql 无法在postgres的bytea字段中插入null

Postgresql 无法在postgres的bytea字段中插入null,postgresql,jdbc,blob,Postgresql,Jdbc,Blob,我无法在数据类型为bytea(blob)的postgres数据库中插入空值。这是我的java代码片段: ps.setNull(++index, java.sql.Types.BLOB); bytea列是可为空的列。下表说明如下 testdb=# \d+ plan Table "public.plan" Column | Type | Modifiers | Storage | Stats target | Descript

我无法在数据类型为bytea(blob)的postgres数据库中插入空值。这是我的java代码片段:

ps.setNull(++index, java.sql.Types.BLOB);
bytea列是可为空的列。下表说明如下

testdb=# \d+ plan 
                           Table "public.plan"
   Column    | Type  | Modifiers | Storage  | Stats target | Description 

-------------+-------+-----------+----------+--------------+-------------

description | bytea |           | extended |              | 

Has OIDs: no
我得到以下异常
java.sql.BatchUpdateException:批处理条目11插入到public.plan(description)值(NULL)已中止。调用getNextException查看原因。

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);

这也对我起了作用:

ps.setNull(++index, Types.BINARY);

您得到的错误是什么?java.sql.BatchUpdateException:Batch entry 11 INSERT to public.plan(description)VALUES(NULL)被中止。调用getNextException查看原因。这是例外。列“description”的类型为bytea,但表达式的类型为oid。如何将其转换为oid。请尝试
setObject(++index,null)
setNull(++index,Types.OTHER)
谢谢,它与setNull(++index,Types.OTHER)一起工作:)还有一个问题,这些解决方案的可移植性如何?对于后代:我已经肯定地测试了
ps.setObject(++index,null)。