Postgresql 和 BLOB - bytea 的最大大小?
·
问题:Postgresql 和 BLOB - bytea 的最大大小?
我目前正在尝试将图像存储在 psql 表中,并且正在按照本指南此处使用 bytea 作为图像。问题是我要插入的图像约为 24kb,并且我不断收到最大大小为 8191 的错误消息,尽管我在其他地方读到过,bytea 应该最多可以存储 1gb。当然,我应该能够以某种方式提高这个最大限制吗?
代码:
String query = "INSERT INTO " + tableName + " VALUES(?);";
try {
PreparedStatement stmt = conn.prepareStatement(query);
File file = new File(location);
FileInputStream fi = new FileInputStream(file);
stmt.setBinaryStream(1, fi, (int)file.length());
boolean res = stmt.execute();
stmt.close();
fi.close
return res;
}
数据库表目前仅包含一个字节。
错误信息:
org.postgresql.util.PSQLException: ERROR: index row requires 23888 bytes, maximum size is 8191
解答
显然,您在该列上有一个 index (老实说,我很惊讶您可以创建它 - 我本以为 Postgres 会拒绝它)。
bytea列上的索引实际上没有意义。如果您删除该索引,则应该没问题。
真正的问题是:为什么要在存储二进制数据的列上创建索引?
更多推荐
所有评论(0)