我有非空数据库并通过以下方式进行备份:
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有一点了解,所以我认为对于更有经验的用户来说这应该是显而易见的。
答案 0 :(得分: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)
答案 1 :(得分:0)
遇到相同的问题,请在此处找到解决方案:Unable to restore psql database from pg_dump with a different username
pg_dump dbname -O -x> backupname.sql
-O <-没有所有者 不要输出命令来设置对象所有权以匹配原始数据库
-x <-无特权 防止转储访问权限(授予/撤消命令)