【问题标题】:How to backup/restore Rails db with Postgres?如何使用 Postgres 备份/恢复 Rails 数据库?
【发布时间】:2013-09-10 15:57:45
【问题描述】:

我在我的服务器上执行以下操作:

 pg_dump -O -c register_production > register.sql

然后,将 register.sql 复制到我的本地环境后,我尝试:

 psql register_development < register.sql

这似乎可行,但是当我尝试在本地启动 Rails 站点时,我得到了这个:

 PG::UndefinedTable: ERROR:  relation "list_items" does not exist at character 28

如何将服务器数据库中的所有内容(包括关系)恢复到我的本地开发数据库?

【问题讨论】:

标签: ruby-on-rails postgresql


【解决方案1】:

我使用这个命令来保存我的数据库:

pg_dump -F c -v -U postgres -h localhost <database_name> -f /tmp/<filename>.psql

还有这个来恢复它:

pg_restore -c -C -F c -v -U postgres /tmp/<filename>.psql

这会以 Postgres 的自定义格式 (-F c) 转储数据库,该格式默认压缩并允许对其内容进行重新排序。 -C -c 将删除已经存在的数据库,然后重新创建它,这对您的情况很有帮助。 -v 指定详细信息,这样您就可以准确地看到发生的情况。

【讨论】:

  • 这里的问题是pg_restore恢复数据库register_production,我想把数据恢复到我本地机器上的register_development。
  • 嗨!我有这个命令的问题。我收到以下错误:pg_dump: [archiver (db)] query failed: ERROR: permission denied for relation schema_migrations。可能是什么问题?谢谢!
  • 抱歉劫持。我一直在尝试按照您上面的命令恢复数据库。看起来它正在工作,因为我看到了大量命令。但是当我进去看的时候,没有一个数据被复制进来。有什么想法吗?
  • 我遇到了与 AI D 相同的问题,pg_restore 只是将内容转储到 STDOUT。我通过将 -d 添加到 pg_restore 命令来解决此问题。
  • 我无法在我的 tmp 文件夹中找到这个 psql 文件。它将在哪里生成?
【解决方案2】:

register_development 数据库在您运行psql 命令之前存在吗?因为该表单不会为您创建它。

更多信息请参见http://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE

【讨论】:

    猜你喜欢
    • 2011-04-28
    • 2013-08-29
    • 2012-06-14
    • 2022-01-10
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多