如何将开发环境的数据填充到生产数据库(Heroku)中?(Rails)

6

heroku run rake db:migrate 可以成功地更改生产数据库的结构:

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

但是我添加到本地开发数据库中的数据没有上传到heroku生产数据库。

这是正常情况吗?还是有方法可以使两个数据库匹配?

提前致谢。


你的意思是说你有本地盒子上的数据想要在生产环境中使用?这些数据有多少?需要填充查找表吗? - natedavisolds
2个回答

10

这是正常的行为。rake db:migrate仅会创建你的数据库结构。如果你想在Heroku上复制开发中已有的数据,可以使用heroku db:push命令,或者只需使用seeds.rb来初始化数据库并添加一些特定的记录。


6

Migration(数据库迁移)可以同时处理结构(模式)和数据,但一旦开始使用,通常假设生产数据是信息的正式来源。如果需要设置数据库的数据,例如列表(“Mastercard,Visa,Amex”)或引导数据(例如设置管理员用户),这些数据可以放在“seeds.rb”文件中。没有内置功能可以复制数据库(模式和内容)并自动应用它 - 这通常是一次性的事情。

(反过来-将生产数据库复制到QA或开发实例是常见的用例。起初,您可能会认为:Rails应该能够做到这一点。但复制典型的生产数据库可能存在问题。最重要的是:复制具有用户信息的生产数据库是重大的安全风险;任何复制操作都应至少使用户匿名化。第二个问题仅是数据库大小:生产数据库经常用于重现真实生活中的性能问题或其他边缘情况,但任何大型数据库最终都需要花费很长时间才能复制,并且高度依赖于您正在使用的特定数据库以及权限)

简而言之,Rails对于迁移的处理是正确的:假设结构更新是可以的,但需要您填充数据。希望这能帮助您!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接