PostgreSQL 9.X bytea表示'hex'或'escape'表示缩略图

And*_*Boc 5 delphi postgresql bytea

我的应用程序(在Delphi和ZEOS组件中开发)使用PostgreSQL 8.4并将一些缩略图存储到一bytea列中.

我想迁移到PostgreSQL 9.2并恢复转储,一切正常,除非我尝试检索这些图像:Postgres 9.2 hex用于输出表示而不是escape在Postgres 8.4 中使用.

有两种可能的解决方案:更改Postgres 9.2设置以进行escape表示,或hex通过应用程序更改二进制数据中的字符串.但什么是最好的解决方案?为什么PostgreSQL的9.X改变hexbytea代表性?
这是一个简单的设置还是有技术原因?

Erw*_*ter 4

Postgres 9.0 的发行说明中给出了理由:

  • 允许bytea以十六进制表示法写入值 (Peter Eisentraut)

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

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

你似乎已经意识到了bytea_output