我最近在heroku部署了一个网站,我遇到了数据库问题。我在rails上使用ruby,当我第一次创建本地数据库时,我使用了SQLite。部署到heroku时,我不得不将我的数据库更改为Postgres,并且在此过程中删除了几个迁移文件并将其更改为单个迁移。现在,当我在我的localhost上运行postgres数据库时,我仍然看到我的数据库中的所有列,但是当我访问heroku上的页面时,其中一列失踪了。
我检查了我的本地控制台和heroku控制台,现在数据库不同了。本地控制台包含数据库中的所有列,而heroku控制台缺少数据库中的一个列,但正确生成所有其他列。我已经尝试在heroku上运行rake任务并将最近的更改推送到heroku。
我尝试添加额外的迁移以将缺少的列添加到数据库中,但每当我尝试进行迁移时,它都会告诉我该属性已经存在。我能得到的任何帮助表示赞赏!
答案 0 :(得分:2)
在heroku上设置数据库的最佳方法是使用
rake db:schema:load
迁移,尽管可能很强大,但并不是权威来源 对于您的数据库架构。该角色属于db / schema.rb或 Active Record通过检查数据库生成的SQL文件。他们 不是为了编辑而设计的,它们只代表当前的状态 数据库。
部署新的实例不需要(并且容易出错) 通过重播整个迁移历史记录的应用程序。它简单得多 并且更快地加载到数据库中的当前描述 架构。