首页 > 解决方案 > 如何将 PostgreSQL 数据库从虚拟机迁移到生产服务器?

问题描述

我尝试将数据库从虚拟机迁移到生产服务器(都在 Ubuntu 上工作),但是当我厌倦了使用该命令创建备份文件时,我首先遇到了很多问题

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

出现此错误

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

一切顺利,但是当我使用此命令运行服务器时

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

标签: postgresqlubuntu-18.04psqlpg-dumppg-restore

解决方案


以超级用户身份尝试此操作。显然“管理员”不是超级用户。

您的第一次尝试是创建纯文本备份,您可以使用“psql”进行恢复。您的第二次尝试(“-Fc”)创建自定义格式备份,您需要“pg_restore”来恢复它。

并且不要忘记使用“pg_dumpall -g”迁移全局对象(角色、表空间等)。


推荐阅读