postgresql - 如何将 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
解决方案
以超级用户身份尝试此操作。显然“管理员”不是超级用户。
您的第一次尝试是创建纯文本备份,您可以使用“psql”进行恢复。您的第二次尝试(“-Fc”)创建自定义格式备份,您需要“pg_restore”来恢复它。
并且不要忘记使用“pg_dumpall -g”迁移全局对象(角色、表空间等)。
推荐阅读
- php - 数组中的元素不适用于 in_array
- c# - 如何使用 c# 在 Unity 中移动到下一个级别/场景
- reactjs - 动态文件源 React-PDF (Hooks)
- python - 尝试求解 x 时获取“int”对象不可迭代
- c++ - 当我通过代码arduino esp32传递命令时,sim800 cme erro2
- node.js - 如何解决 mongoddb adbpter 查询构建问题中的 $near 查询?
- node.js - nodejs writeFile 仅适用于管理员权限
- r - R通过将事物组合在一起制作百分比的pi图
- python - 在 EventGhost 中使用 Python
- python - 获取网站部分的 id 或 xpath