2017-04-24 109 views
0

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

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

我试图增加一个额外的迁移缺少的列添加到数据库中,但每当我试图耙它告诉我,属性已经存在的迁移。任何帮助,我可以得到赞赏!

+2

使用'rake db:schema:load'在heroku上设置你的db,它使用'schema.rb'文件来正确设置所有的东西。 – Iceman

+2

http://guides.rubyonrails.org/active_record_migrations.html – max

+0

谢谢@Iceman!这工作完美! – user7077886

回答

2

设置你的数据库在Heroku上的最佳方式是与

rake db:schema:load 

guides on migrations

迁移,强大的,因为他们可能是不适合你的数据库架构的权威来源 。该角色属于db/schema.rb或Active Record通过检查数据库生成的SQL文件。他们 没有被设计成可以编辑,他们只是表示数据库的当前状态 。

通过重播整个迁移历史记录,不需要(也很容易出错)部署应用程序的新实例 。这是更简单 和更快地只是加载到数据库的当前 模式的说明。