19

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

 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

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

4

2 回答 2

65

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

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指定详细信息,以便您可以准确地看到发生的情况。

于 2013-09-10T16:07:07.203 回答
1

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

有关详细信息,请参阅http://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE

于 2013-09-10T16:05:24.480 回答