Postgres 恢复未恢复二进制数据

Postgres 恢复未恢复二进制数据

这是一个非常紧急的情况。

我们在 CentOs 机器上安装了 postgres 9.4 数据库。

我们正在尝试从 Heroku Postgres 数据库进行备份并将其恢复到 CentOs 机器上的数据库。

我们使用的命令: pg_dump -Fc -h ec2-99-99-99-99.compute-1.amazonaws.com -p 5762 -U xyz -d dbname > file.dump

pg_dump 创建的转储似乎缺少二进制类型的列中的数据(这些列包含二进制格式的图像)。

当我们使用以下命令将此备份恢复到 CentOS 上的数据库时,图像中的所有图像(即二进制类型列)都丢失了:

pg_restore -d onlinedb ~/file.dump

我们必须在早上开始直播,但这个意外的问题让我们非常沮丧。

\d attachments(附件是问题表)命令的输出:

             Table "public.attachments"
      Column      |          Type          | Modifiers 
------------------+------------------------+-----------
 id               | integer                | not null
 configuration_id | integer                | 
 style            | character varying(255) | 
 file_contents    | bytea                  | 

更多信息:我们正在创建备份的 heroku postgres 数据库是 PostgreSQL 9.2.6。我们要恢复到的是 PostgreSQL 9.4。

答案1

我们终于能够恢复备份。我们尝试了很多方法,我不知道修复方法是什么,但我们的结论是问题出在 postgresql.conf 中的 bytea_output 设置上。我们认为 Heroku 使用的是“escape”值,而我们的数据库服务器使用的是“hex”,这导致了问题。

相关内容