【问题标题】:Restore database from pg_dump从 pg_dump 恢复数据库
【发布时间】:2018-12-18 06:46:58
【问题描述】:

我有非空数据库并通过以下方式进行备份:

pg_dump myBase > backup.sql

然后我必须删除 db,现在我正在尝试从 backup.sql 中恢复它。所以首先我通过以下方式创建数据库:

create database myBase

psql授予权限

grant all privileges on database "myBase" to myUser

然后尝试通过以下方式从 pg_dump 中恢复:

pg_dump myBase < backup.sql

我没有收到任何错误,但是当我通过\dt 检查表格时,它完全是空的。 我也尝试过恢复:

psql -h localhost -d myBase-U myUser-f backup.sql(没有错误,但也没有表格)

psql myBase < backup.sql(如上)

我对 dbs 有一点经验,所以我认为这对于更有经验的用户来说应该是显而易见的。

【问题讨论】:

  • 如何检查dp是否为空? psql myBase -c "\dt"?..
  • \dt 显示 db 中的表,我“未找到任何关系”
  • 所以在你删除数据库之前你有一个列表并且在恢复相同的命令后显示没有找到关系?..
  • 是的,在 drop "\dt" 之前显示表列表,还原后我“没有找到任何关系”。
  • 无法重现。看到答案。不知道为什么你没有错误也没有关系。我的意思是很多可能的故障点,但看不出如何猜测

标签: database postgresql psql pg-dump


【解决方案1】:

无法重现该问题:

postgres=# create database so;
CREATE DATABASE
postgres=# \c so
You are now connected to database "so" as user "postgres".
so=# create table so(i int);
CREATE TABLE
so=# insert into so values (1);
INSERT 0 1
so=# \! pg_dump so > /tmp/so.sql
so=# \c postgres
You are now connected to database "postgres" as user "postgres".
postgres=# drop database so;
DROP DATABASE
postgres=# create database so;
CREATE DATABASE
postgres=# \c so
You are now connected to database "so" as user "postgres".
so=# \dt
No relations found.
so=# \! psql so -f /tmp/so.sql
SET
SET
SET
SET
SET
SET
CREATE EXTENSION
COMMENT
SET
SET
SET
CREATE TABLE
ALTER TABLE
REVOKE
REVOKE
GRANT
GRANT
so=# \dt
        List of relations
 Schema | Name | Type  |  Owner
--------+------+-------+----------
 public | so   | table | postgres
(1 row)

【讨论】:

  • 我按照您的指示和示例“SO”工作没有问题,但我的情况仍然无法正常工作。我看到的是恢复数据库行“-f /tmp/so.sql”的区别。您的示例产生了当前正在发生的事情的几行,而我的甚至没有。也许我的转储坏了?
  • 如果你的语句有错误,它会给stdout报错...当然你可以将\o some_file添加到sql脚本的第一行,然后psql会将所有输出发送到some_file,但是你说你没有修改它?..你也没有使用-o开关 - 对吧?..
  • BTW 转储不能被破坏。它适用于 Windows。我创建新数据库、用户、授予权限、恢复数据并在本地运行。所以由于某种原因它在 linux 上不起作用
【解决方案2】:

遇到同样的问题,在这里找到解决方案:Unable to restore psql database from pg_dump with a different username

pg_dump 数据库名 -O -x > 备份名.sql

-O

-x

【讨论】:

    猜你喜欢
    • 2019-12-07
    • 2018-07-22
    • 2012-09-01
    • 2019-03-05
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多