Rails:开发和生产之间的迁移和数据库差异

时间:2017-04-24 19:23:53

标签: ruby-on-rails heroku migration

我最近在heroku部署了一个网站,我遇到了数据库问题。我在rails上使用ruby,当我第一次创建本地数据库时,我使用了SQLite。部署到heroku时,我不得不将我的数据库更改为Postgres,并且在此过程中删除了几个迁移文件并将其更改为单个迁移。现在,当我在我的localhost上运行postgres数据库时,我仍然看到我的数据库中的所有列,但是当我访问heroku上的页面时,其中一列失踪了。

我检查了我的本地控制台和heroku控制台,现在数据库不同了。本地控制台包含数据库中的所有列,而heroku控制台缺少数据库中的一个列,但正确生成所有其他列。我已经尝试在heroku上运行rake任务并将最近的更改推送到heroku。

我尝试添加额外的迁移以将缺少的列添加到数据库中,但每当我尝试进行迁移时,它都会告诉我该属性已经存在。我能得到的任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

在heroku上设置数据库的最佳方法是使用

rake db:schema:load

来自guides on migrations

  

迁移,尽管可能很强大,但并不是权威来源   对于您的数据库架构。该角色属于db / schema.rb或   Active Record通过检查数据库生成的SQL文件。他们   不是为了编辑而设计的,它们只代表当前的状态   数据库。

     

部署新的实例不需要(并且容易出错)   通过重播整个迁移历史记录的应用程序。它简单得多   并且更快地加载到数据库中的当前描述   架构。