Postgresql pg restore: PostgreSQL : Документация: 9.6: pg_restore : Компания Postgres Professional
Содержание
postgresql — Восстановить дамп psql с другим (новым) именем базы данных -d/—dbname и -f/—file нельзя использовать вместе
Задавать вопрос
спросил
Изменено
2 года, 3 месяца назад
Просмотрено
4к раз
Я создал дамп базы данных PostgreSQL, используя:
pg_dump --file "dump_file.sql" \ --host "локальный хост" \ --порт "5432" \ --username "имя пользователя" \ --подробный \ --формат=с \ --blobs \ --кодировка "UTF8" \ --схема "общедоступная" \ "имя БД"
Затем, когда я пытаюсь его восстановить:
pg_restore --file "dump_file.sql" \ --чистый \ --создавать \ --нет-привилегий \ --нет владельца \ --формат=с \ -U "имя пользователя" \ -d "новое имя базы данных"
пишет:
pg_restore: ошибка: опции -d/--dbname и -f/--file нельзя использовать вместе.
И если я удалю -d "newdatabasename"
, он говорит:
pg_restore: ошибка: не удалось прочитать из входного файла: конец файла
Вопрос
Как я могу восстановить эту базу данных под новым именем?
Почитав немного, я подумал, что --no-privacy --no-owner
исправит это, но это не так…
- postgresql
- pg-восстановление
3
С pg_restore
файл дампа , а не аргумент для --file
. Это вообще не опционный аргумент.
pg_restore --clean \ --создавать \ --нет-привилегий \ --нет владельца \ --формат=с \ -U "имя пользователя" \ -d "новое имя базы данных" \ "dump_file.sql"
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.
postgresql — Как восстановить резервную копию postgres — ОШИБКА: не удается удалить текущую открытую базу данных
Я пытаюсь восстановить резервную копию postgres из системы, которая больше не подготовлена, и я получаю ряд ошибок, в зависимости от что я пытаюсь.
- У меня есть только резервные копии, нет оригинальных серверов для ссылки
- Я успешно восстанавливал данные из этих производственных резервных копий в прошлом, но с момента последнего успеха испортил свою локальную среду (например, переустановил postgres через Homebrew)
- Я считаю, что бывший коллега (уже недоступен) успешно восстановил эту конкретную резервную копию
- Я столкнулся с той же ошибкой, когда:
- попытка резервного копирования с помощью [email protected]
- попытка использовать предыдущую заведомо исправную версию базы данных (с использованием postgres 11)
(я прочитал похожие/предлагаемые вопросы, и они не кажутся актуальными)
Резервная копия была создана с помощью следующей команды (в сценарии bash):
pg_dump --schema=public -Fc
И команда, используемая для восстановления сценария (который повторяется как текст справки сценарием резервного копирования):
dropdb ${PGDATABASE} созданб ${PGDATABASE} время pg_restore \ -j4 \ -d ${PGDATABASE} \ --создавать \ --нет-привилегий \ --нет владельца \ --чистый \ --если-существует \ --выход при ошибке \ "${имя_каталога}/${имя_файла}"
Когда я запускаю команду восстановления локально, я получаю следующее:
time pg_restore -j4 -d ${PGDATABASE} --create --no-privious --no-owner --clean --if-exists -- выход-при-ошибке . ./backups/backup__2019-09-03_16-00-19.pg_dump pg_restore: [archiver (db)] Ошибка при ОБРАБОТКЕ TOC: pg_restore: [archiver (db)] Ошибка из записи TOC 4954; 1262 962277 БАЗА ДАННЫХ mydb mydb pg_restore: [archiver (db)] не удалось выполнить запрос: ОШИБКА: невозможно удалить текущую открытую базу данных Команда была такой: УДАЛИТЬ БАЗУ ДАННЫХ, ЕСЛИ СУЩЕСТВУЕТ mydb; реальный 0m0.049с пользователь 0м0.019с система 0m0.012s
Раньше у меня только когда-либо были «ошибки нехватки места на диске» после нескольких минут работы, но, как вы можете видеть из вывода time
, эта ошибка возникает почти сразу!
Резервная копия создается со сжатием -Fc
, и я могу распаковать резервную копию в открытый текст, используя pg_restore backup.pg_dump > backup.sql
, но я не могу найти там какие-либо команды, связанные до УДАЛИТЬ БАЗУ ДАННЫХ
:/
-- Сброшено из базы данных версии 9.6.11 -- Сброшено pg_dump версии 11.3 (Ubuntu 11. 3-1.pgdg14.04+1)
Я вижу, что БД изначально была сброшена с 9.6.11
, но я достаточно уверен, что ранее успешно восстанавливал с помощью PG 10…
Я пробовал разные вещи, например:
time pg_restore -d $ {PGDATABASE} --нет-привилегий --нет-владелец --выход-при-ошибке ../backups/backup__2019-09-03_16-00-19.pg_dump
pg_restore: [archiver (db)] Ошибка при ОБРАБОТКЕ TOC:
pg_restore: [archiver (db)] Ошибка из записи 7 оглавления; 2615 1033373 СХЕМА общедоступной mydb
pg_restore: [archiver (db)] не удалось выполнить запрос: ОШИБКА: схема «public» уже существует
Команда была: CREATE SCHEMA public;
ptim: dropdb mydb; созданнаяb mydb
ptim:каталог ptim$ dropdb mydb
ptim:каталог ptim$ время pg_restore -d ${PGDATABASE} --create --без привилегий --без владельца --выход при ошибке ../backups/backup__2019-09-03_16-00-19.pg_dump
pg_restore: [archiver (db)] соединение с базой данных "mydb" не удалось: FATAL: база данных "mydb" не существует
# думаю, я неправильно понял флаг создания!
ptim:каталог ptim$ dropdb mydb; созданнаяb mydb
dropdb: ошибка удаления базы данных: ОШИБКА: база данных «mydb» не существует
ptim:каталог ptim$ время pg_restore -d ${PGDATABASE} --create --no-привилегий --no-owner --exit-on-error .