在机器之间移动postgres数据库时如何处理外键

时间:2017-01-24 20:56:37

标签: ruby-on-rails postgresql ruby-on-rails-4 foreign-keys

当我从一个开发平台移动到另一个开发平台时,我正试图在机器之间移动一个postgres数据库。我在两台机器上安装了yaml_db gem。

在我的旧平台上,我做了:

rake db:scheme:dump
rake db:data:dump

当我在我的新机器上转到reload数据库时,我发现我的二十几个foreign_keys阻止我加载我的数据。我有什么选择?

2 个答案:

答案 0 :(得分:1)

你正在复制数据库,Rails真的不应该与这个过程有任何关系(正如你所看到的那样,它只会妨碍你。)

相反,戴上你的DBA帽子并复制数据库而不用担心Rails。使用pg_dump转储数据,然后使用pg_restore恢复数据。数据库的备份/恢复工具了解外键,触发器,扩展以及Railsy工具无法理解的任何其他内容。

答案 1 :(得分:0)

您可以使用pg_dump命令转储数据库:

例如:

pg_dump -U <user-name> -h <host> <database> > <file-name>.sql

pg_dump -U postgres -h 127.0.0.1 database1 > database1.sql

然后将文件复制到其他计算机并运行以下命令以恢复数据库

psql <database-name> < path/to/sql_dump_file

psql database1 < database1.sql