我有一个打包的 hsqldb 数据库,一个包含我的数据库文件(mydb.script 和 mydb.lobs)的 jar 文件。
当使用“res”url (jdbc:hsqldb:res:mydb) 连接到我的数据库时,所有查询都可以正常工作,除了从 BLOB 列中获取字节。这是我得到的例外:
Caused by: org.hsqldb.HsqlException: file input/output error
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.types.BlobDataID.getBytes(Unknown Source)
at org.hsqldb.types.BlobInputStream.readIntoBuffer(Unknown Source)
当使用“文件”url 连接到同一个数据库时,一切正常。用于从 BLOB 列获取字节的代码如下:
// rs is ResultSet
Blob blob = rs.getBlob(i + 1);
int blobSize = (int) blob.length();
byte[] bytes = new byte[blobSize];
InputStream is = blob.getBinaryStream();
try {
is.read(bytes, 0, blobSize);
} catch (IOException e) {
logger.error("Error reading bytes from blob: ", e);
}
有什么想法会导致在使用“res”url 时从 BLOB 列读取字节失败,而在使用“file”url 时会成功?