这个问题令我难过。
当部署到Heroku时,我得到了错误但不是本地错误,这表明db
有问题将其引用
class StaticPagesController < ApplicationController
def home
if logged_in?
@project = current_user.projects.build if logged_in?
**@timetable = current_user.timetables.build if logged_in?**
@feed_items = current_user.feed.paginate(page: params[:page]).reorder("project_due_date ASC")
@feed_items3 = current_user.feed3.paginate(page: params[:page], :per_page => 1)
end
end
我已经尝试了
Heroku run db:migrate and Heroku restart
仍然是同样的错误
这可能是因为我有某种方式错误的架构,但是当影响Heroku但不影响localhost的时候?
网址= https://radiant-sea-5676.herokuapp.com/
编辑 - 它似乎在没有登录Heroku时工作,但在登录时崩溃。在localhost上以任何一种方式工作。
再次编辑 - 通过Heroku检查架构显示,即使迁移后,用户iD列也没有用户iD的索引设置。
create_table "timetables", force: :cascade do |t|
t.string "name", limit: 255
t.string "attachment", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
答案 0 :(得分:2)
直到有人得到更好的解释或回答我必须做的是去Heroku仪表板并删除ClearDB数据库,然后创建一个新的。
我使用
配置了应用heroku config | grep CLEARDB_DATABASE_URL
heroku config:set DATABASE_URL='mysql://adffdadf2341:adf4234@us-cdbr-east.cleardb.com/heroku_db?reconnect=true'
然后运行heroku run rake db:migrate并使用正确的Schema(包括外键)重建数据库。
答案 1 :(得分:2)
您无需删除或重置数据库。显然,在生产模式下运行时,数据库模式已缓存。因此,每当进行迁移时,都需要使用heroku restart
命令跟进迁移,以加载更新的架构。
答案 2 :(得分:1)
忽略我的最后一个答案,当我登录您的网站并访问时间表页面时,我发现了这个问题。
您的架构可能已损坏,这可能会不时发生,尤其是在运行它们之后更改迁移时。
尝试以下方法:
k
而不是rake db:migrate再次迁移希望这有帮助
了解发生这种情况的原因非常重要,您是否可以建议您在运行之后是否修改了任何迁移?我学到了很难,你不能这样做!
答案 3 :(得分:0)
找到一个很好的解决方案,当模式不同步时,它需要销毁数据库并构建一个干净的数据库。重置数据库可以使模式保持原样,因此无用。
rake db:drop db:create db:migrate db:schema:dump db:setup
并将任何架构更改推送到heroku。heroku restart
重新启动您的dynos,这会切断所有数据库连接,因此您不会遇到问题。您也可以切换到维护模式。heroku run 'rake db:drop db:create db:migrate db:schema:dump db:setup'
。它有点hacky,但基本上对数据库执行硬重置。您可能不需要运行最后两个命令。
答案 4 :(得分:0)
第 1 步:在本地重置您的数据库:
rails db:drop:db:create db:migrate db:schema:dump db:setup
如果您遇到 db:drop
的错误,您可以使用 :_unsafe
方式来解决!我不确定这会做什么,但它会强制删除数据库! (您将丢失所有本地存储的数据)
因此,如果您遇到该错误,请使用此(而不是第 1 步):
rails db:drop:_unsafe db:create db:migrate db:schema:dump db:setup
第 2 步:git 和 GitHub:
git add .
git commit -am 'dropped and recreated DB'
git push
第 2 步:重置您的 Heroku 数据库:
this link 中的精彩讨论!
heroku restart
heroku pg:reset DATABASE (no need to change the DATABASE)
heroku run rake db:migrate
heroku run rake db:seed (if you have seed)