我正在尝试从备份恢复数据库,但无法连接到 postgresql.

namespace :db do
  task import: :environment do
  import_path = "~/backups"
  sql_file = "PostgreSQL.sql"
  database_config = Rails.configuration.database_configuration[Rails.env]

  system "psql --username=#{database_config['username']} -no-password # {database_config['database']} < #{import_path}/#{sql_file}"
  end
end

我尝试改变 pg_hba.conf 文件(与 md5 同等)。在控制台中,我对超级用户尝试了同样的操作 postgres, ,但仍然失败。

顺便说一句,有谁知道恢复数据库的更好方法吗?我用了备用宝石。

编辑:我重新启动了postgresql服务器并通过了身份验证。但是,没有恢复数据库。我恢复了文件中的更改,并将 -h localhost 添加到 psql 命令中。数据库现已恢复。我现在得到的唯一错误是:

must be owner of extension plpgsql //and
no privileges could be revoked for "public"
有帮助吗?

解决方案

  1. 更改 pg_hba.conf 后,您应该重新加载或向 postmaster pid 发送 SIGHUP 信号。以便应用更改。
  2. 为什么不使用 psql -f 来执行备份sql文件?
  3. 或者您可以使用 pg_dump 备份和 pg_restore 恢复。或复制命令备份和恢复。喜欢 :

    digoal=# copy tbl_join_1 to '/home/pg93/tbl_join_1.dmp';
    COPY 10
    digoal=# delete from tbl_join_1;
    DELETE 10
    digoal=# copy tbl_join_1 from '/home/pg93/tbl_join_1.dmp';
    COPY 10
    

    或者

    pg93@db-172-16-3-150-> pg_dump -f ./tbl_join_1.dmp -t tbl_join_1
    pg93@db-172-16-3-150-> psql
    psql (9.3.3)
    Type "help" for help.
    
    digoal=# drop table tbl_join_1;
    DROP TABLE
    digoal=# \q
    pg93@db-172-16-3-150-> psql -f ./tbl_join_1.dmp 
    SET
    SET
    SET
    SET
    SET
    SET
    SET
    SET
    SET
    CREATE TABLE
    ALTER TABLE
    ALTER TABLE
    
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top