如何使用开发数据填充生产数据库(heroku)? (导轨)

时间:2012-03-24 00:04:07

标签: ruby-on-rails database heroku migration

heroku run rake db:migrate可以很好地改变生产数据库的结构:

Migrating to CreateUsers (20120318090252)
Migrating to AddIndexToUsersEmail (20120319191315)
Migrating to AddPasswordDigestToUsers (20120319194632)
Migrating to AddRememberTokenToUsers (20120323142854)

条目,我添加到本地开发数据库的数据尚未上传到heroku生产数据库。

这是正常的,还是有办法让两个数据库匹配?

提前致谢。

2 个答案:

答案 0 :(得分:10)

这是正常行为。 rake db:migrate只会创建您的数据库结构。如果要在Heroku上复制开发中已有的数据,请使用heroku db:push命令,或者如果要使用某些固定记录初始化数据库,只需使用seeds.rb。

答案 1 :(得分:6)

迁移可以同时处理结构(模式)和数据,但是一旦滚动,假设在大多数情况下,您的生产数据是规范的信息源。如果需要设置数据库的数据,例如列表(“万事达卡”,“维萨卡”,“美国运通卡”)或自举数据(例如设置管理员用户)等内容,可以使用“种子.rb”文件。内置任何内容它创建了一个数据库(模式和内容)的副本并自动应用它 - 这通常是一次性的。

(转向其他方向 - 将生产数据库复制到QA或开发实例是一个常见的用例。首先,您可能会认为:Rails应该能够做到这一点。但复制一个典型的生产数据库可能充满了问题。最重要的是:复制具有用户信息的生产数据库是一个重大的安全风险;任何复制操作至少应该使用户匿名。第二个问题只是数据库大小:生产数据库对于重现实际性能问题或其他边缘情况通常很有用甚至是必要的,但任何大型数据库最终都需要很长时间才能复制,并且高度依赖于您正在使用的特定数据库以及权限)

简而言之,Rails通过迁移做了正确的事情:假设结构更新正常,但需要您填充数据。希望这有帮助!