[英]Restore database from pg_dump
我有非空的數據庫,並通過以下方式進行了備份:
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有一些經驗,所以我認為對於經驗豐富的用戶來說應該是顯而易見的。
無法重現該問題:
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)
遇到相同的問題,請在此處找到解決方案: 無法使用其他用戶名從pg_dump恢復psql數據庫
pg_dump dbname -O -x> backupname.sql
-O <-無所有者不輸出命令以設置對象的所有權以匹配原始數據庫
-x <-無特權防止轉儲訪問特權(授予/撤銷命令)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.