PostgreSQL 9.X中以'hex'或'escape'表示缩略图图像的bytea

5
我的应用程序(使用Delphi和ZEOS组件开发)使用PostgreSQL 8.4,并将一些缩略图映像存储到一个bytea列中。
我想迁移到PostgreSQL 9.2,已经还原了备份,一切正常,但是当我尝试检索这些映像时出现问题:Postgres 9.2使用hex表示输出,而Postgres 8.4使用escape表示。
有两种可能的解决方案:更改Postgres 9.2设置为escape表示或通过应用程序更改二进制数据中的hex字符串。但哪种方案最好?为什么PostgreSQL 9.X更改为使用hex表示bytea?这是一个简单的设置还是有技术原因?
1个回答

4
Postgres 9.0的发布说明中提出了一个理由:
  • 允许使用十六进制符号写入bytea值 (Peter Eisentraut)

服务器参数bytea_output控制bytea输出是使用十六进制格式还是传统格式。当连接到PostgreSQL 9.0或更新版本的服务器时,Libpq的PQescapeByteaConn()函数会自动使用十六进制格式。但是,早于9.0版本的libpq版本将无法正确处理来自新服务器的十六进制格式。

新的十六进制格式将直接兼容更多使用二进制数据的应用程序,使它们能够存储和检索数据,而无需进行额外的转换。它还比传统格式读写速度更快。

你似乎已经知道了bytea_output

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接