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

我最近在heroku上部署了一个网站,我遇到了数据库问题。 我在rails上使用ruby,当我第一次创建我使用SQLite的本地数据库时。 在部署到heroku时,我必须将我的数据库更改为Postgres,并在此过程中删除多个迁移文件并将其更改为单个迁移。 现在,当我在本地主机上运行postgres数据库时,我仍然可以看到数据库中的所有列,但是当我访问heroku上的某个列时,缺少一列。

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

我试图添加一个额外的迁移来将缺失的列添加到数据库中,但每当我尝试掠过迁移时,它都会告诉我该属性已存在。 任何帮助,我可以得到赞赏!


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

rake db:schema:load

来自迁移指南

迁移无论如何都不是数据库模式的权威来源。 该角色落在db / schema.rb或Active Record通过检查数据库生成的SQL文件中。 它们不是为编辑而设计的,它们只是表示数据库的当前状态。

通过重播整个迁移历史记录,不需要(也很容易出错)部署应用程序的新实例。 只需在数据库中加载当前模式的描述就简单得多。

链接地址: http://www.djcxy.com/p/56905.html

上一篇: Rails: Migration and database differences between development and production

下一篇: Ruby on Rails 5.0 upgrade with migrating users table conflicts