pg_restore: [архіватор] не знайшов магічну рядок у заголовку файлу


13

Я використовую PostgreSQL 9.1 і хочу відновити файли резервного копіювання, створені за допомогою pg_dump:

sudo pg_dump -h 127.0.0.1 -U postgres --clean --inserts -E UTF8 -f out.sql database_name

Ця команда генерує дійсний файл sql, який починається зі скидання будь-яких існуючих об'єктів бази даних, потім генерує всі таблиці, відводи, послідовності тощо і, нарешті, вставляє дані.

Коли я намагаюся відновити згенерований файл резервної копії за допомогою: (розриви рядків додані лише для цілей відображення)

sudo pg_restore 
    -d database_name -h 127.0.0.1 -U postgres
    --format=c --clean --create out.sql

він виходить з ладу і друкує:

pg_restore: [archiver] did not find magic string in file header

У чому причина цього?

Відповіді:


19

Ви відновлюєте, pg_restore --format=c ...але з цим pg_dumpне було зроблено --format=c, це було зроблено у стандартному простому форматі.

З pg_dumpmanpage:

  -F format, --format=format
       Selects the format of the output.  format can be one of the
       following:

       p, plain
           Output a plain-text SQL script file (the default).

Дамп у простому форматі повинен бути поданий безпосередньо до інструменту psqlкомандного рядка, pg_restoreне знає, що це таке, що є причиною цього повідомлення про помилку: не знайдено магічну рядок у заголовку файлу .

Ви можете дивитись безпосередньо на дамп-файл із more out.sqlоболонкою, і ви побачите читабельні команди SQL. Відновіть його за допомогою psql -f out.sql [other options]. Ви, ймовірно, спершу захочете створити цільову базу даних, оскільки --createопція відсутня у pg_dumpвиклику.

З іншого боку, ви можете відкликати дамп, додаючи --format=cйого параметри. Тоді все було б навпаки: pg_restoreтреба використовувати для інтерпретації дамп-файлу у власному форматі.


0

Однією з можливих проблем є урізання файлу даних. Перевірте, чи завантажуєте ви повний файл, порівнявши розміри файлів.


0

Якщо ви використовуєте git-lfs, не забудьте мати власне файл, а не вказівник!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.