Назад | Перейти на главную страницу

Postgres Restore не восстанавливает двоичные данные

Это очень актуальная ситуация.

У нас есть база данных postgres 9.4, установленная на машине CentOs.

Мы пытаемся сделать резервную копию из базы данных 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.

Наконец-то мы смогли восстановить резервную копию. Мы перепробовали так много всего, что я не уверен, что это за исправление, но мы пришли к выводу, что проблема заключалась в настройке bytea_output в postgresql.conf. Мы думаем, что Heroku использовал значение «escape», в то время как наш сервер базы данных использовал «шестнадцатеричный», и это вызвало проблему.