这是一个非常紧急的情况。
我们在 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”,这导致了问题。