Swa*_*l17 11 postgresql pg-dump pg-restore
我正在使用pg_dump和pg_restore来备份和恢复postgres数据库.
以下是与此问题相关的文档中的一些信息.对于Pg_restore,-C选项描述如下
-C
- 创建
在还原到数据库之前创建数据库.如果还指定了--clean,则>> drop并在连接之前重新创建目标数据库.使用此选项时,使用-d命名的数据库仅用于发出初始DROP DATABASE和CREATE DATABASE命令.所有数据都将还原到存档中显示的数据库名称中.
但是,即使我在pg_restore中使用此选项,也会出现以下错误
pg_restore:[archiver(db)]与数据库"test"的连接失败:致命:>数据库"test"不存在
根据描述,-C选项应该创建缺少的数据库.但是在我的情况下并不适用.
以下是我为备份和还原所做的步骤:
pg_dump -N backup -d test --format custom -v -h xxhostxx -p 5432 -U xxuserxx --lock-wait-timeout 300000 -f test_pg_dump.dmp
Run Code Online (Sandbox Code Playgroud)
注意:不使用-C选项,因为它仅对纯文本格式有意义
删除了测试数据库
使用pg_resore恢复数据库
pg_restore -C -d test -v -h xxhostxx -p 5432 -U xxuserxx test_pg_dump.dmp**
Run Code Online (Sandbox Code Playgroud)我无法理解这里的问题是什么!我做错了吗?如果需要更多信息,请与我们联系.
And*_*gel 12
它从来没有对我有用所以这个命令创建了数据库
createdb -h HOST -U USER -W DB_NAME
Run Code Online (Sandbox Code Playgroud)
然后执行 pg restore
pg_restore -d DB_NAME -v -h HOST -p PORT -U USER DUMP_FILE.dump**
Run Code Online (Sandbox Code Playgroud)
故事结局
Jen*_*usk 10
就像@Eelke所说的那样-您已经在文件中写入了“创建数据库”,因此在运行脚本时该数据库不存在...这就是总有“ postgres”数据库的原因。尝试这个:
pg_restore -C -d postgres -v -h xxhostxx -p 5432 -U xxuserxx test_pg_dump.dmp**
Run Code Online (Sandbox Code Playgroud)
这应该:
当然,请检查谁是postgres数据库的所有者-在大多数情况下,您必须以用户'postgres'的身份运行它。
以下引用并不表示您可能认为的意思。在意识到他们在说什么之前,我还必须阅读三遍。
使用此选项时,以-d命名的数据库仅用于发出初始DROP DATABASE和CREATE DATABASE命令。所有数据都将还原到存档中显示的数据库名称中。
这意味着pg_restore最初将连接到-d指定的数据库。它不会创建该数据库。它会使用您要还原的存档中的名称创建一个数据库,并将数据还原到该数据库中。
| 归档时间: |
|
| 查看次数: |
7919 次 |
| 最近记录: |