我在服务器上执行以下操作:
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
如何从服务器db恢复到本地dev db?
的所有内容(包括关系)答案 0 :(得分:47)
我使用此命令保存我的数据库:
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
指定了详细信息,因此您可以确切地看到这种情况发生了什么。
答案 1 :(得分:1)
在运行psql
命令之前,register_development数据库是否存在?因为该表单不会为您创建它。
有关详细信息,请参阅http://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE。