gpt4 book ai didi

Postgresql 和 BLOBs - bytea 的最大大小?

转载 作者:行者123 更新时间:2023-11-29 11:31:11 25 4
gpt4 key购买 nike

我目前正在尝试将图像存储在 psql 表中,并且正在遵循本指南 here使用 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;
}

此时数据库表只有一个bytea。

错误信息:

org.postgresql.util.PSQLException: ERROR: index row requires 23888 bytes, maximum size is 8191

最佳答案

bytea 的最大大小

根据 this old thread , Postgres 中字段的最大大小为 1 GB。

PostgreSQL 版本 12 协议(protocol) limits将行大小发送到客户端(SELECTed)时,行大小减去 2 GiB 减去消息头。 (该协议(protocol)使用 32 位带符号整数来表示消息大小。)未发现其他限制 ( another topic )。

但是 largeobjects 存储为多个 bytea 记录,因此它们不限于这种方式。参见 this docs为他们。

关于Postgresql 和 BLOBs - bytea 的最大大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com