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

时间:2013-06-17 22:19:38

标签: delphi postgresql bytea

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

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

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

1 个答案:

答案 0 :(得分:3)

release notes of Postgres 9.0

给出了一个基本原理
  
      
  • 允许以十六进制表示法编写bytea值(Peter Eisentraut)
  •   
     

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

     

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

您似乎已经了解bytea_output