Как перенести базу данных PostgreSQL с виртуальной машины на рабочий сервер? - PullRequest
0 голосов
/ 30 марта 2020

Я пытался перенести базу данных с виртуальной машины на рабочий сервер (оба работают на Ubuntu), но сначала я столкнулся с множеством проблем, когда мне надоело создавать файл резервной копии с помощью этой команды

pg_dump mydb --file=db.dump --host=localhost --username=admin

эта ошибка показывает up

pg_dump: [archiver (db)] query failed: ERROR:  permission denied for schema topology
pg_dump: [archiver (db)] query was: LOCK TABLE topology.topology IN ACCESS SHARE MODE

затем я попробовал эту команду, и она идет хорошо

pg_dump -Fc mydb > db.dump

и когда я попытался восстановить базу данных на производственном сервере, я использовал эту команду (после создания пользователя и базы данных с этим пользователем)

psql -d mydb --file=db.dump

эта ошибка появляется

The input is a PostgreSQL custom-format dump.
Use the pg_restore command-line client to restore this dump to a database.

Затем я использую эту команду, чтобы восстановить ее

pg_restore -d mydb db.dump

и она go хорошо, но когда я запускаю сервер с помощью этой команды

python manage.py runserver

Эта ошибка появляется

return value.replace(b'\0', b'').decode()
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 1-2: invalid continuation byte

1 Ответ

0 голосов
/ 31 марта 2020

Попробуйте это как суперпользователь. Очевидно, «admin» не является суперпользователем.

Ваша первая попытка - создать резервную копию в виде простого текста, которую можно восстановить с помощью «psql». Ваша вторая попытка ("-F c") создает резервную копию в произвольном формате, и для ее восстановления требуется pg_restore.

И не забудьте перенести глобальные объекты (роли, табличные пространства и т. Д.) , используя "pg_dumpall -g".

...