Ruby on rails Heroku在Rake DB上崩溃:迁移
我已经发布了一个我正在做的项目,我终于让它按照我想要的方式工作了 我把我的东西上传到heroku,花了几个小时考虑如何摆脱sqlite3的所有实例并切换到PG。我得到了修复,但仍然出现了一个错误。结果是一次迁移 我运行了heroku open,得到了错误页面。我运行了heroku日志,得到了这个错误Ruby on rails Heroku在Rake DB上崩溃:迁移,ruby-on-rails,ruby,heroku,ruby-on-rails-4,Ruby On Rails,Ruby,Heroku,Ruby On Rails 4,我已经发布了一个我正在做的项目,我终于让它按照我想要的方式工作了 我把我的东西上传到heroku,花了几个小时考虑如何摆脱sqlite3的所有实例并切换到PG。我得到了修复,但仍然出现了一个错误。结果是一次迁移 我运行了heroku open,得到了错误页面。我运行了heroku日志,得到了这个错误 2014-01-08T22:51:29.356850+00:00 app[web.1]: PG::Error: ERROR: relation "messages" does not exist
2014-01-08T22:51:29.356850+00:00 app[web.1]: PG::Error: ERROR: relation "messages" does not exist
2014-01-08T22:51:29.356850+00:00 app[web.1]: LINE 1: SELECT "messages".* FROM "messages"
我记得的那个错误是因为没有运行迁移。因此,我随后运行了bundle exec rake db:migrate
,然后heroku运行rake db:migrate
,得到了错误
Running `rake db:migrate` attached to terminal... up, run.9247
rake aborted!
Multiple migrations have the name CreateMessages
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/migration.rb:978:in `validate'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/migration.rb:876:in `initialize'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/migration.rb:764:in `new'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/migration.rb:764:in `up'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/migration.rb:742:in `migrate'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:42:in `block (2 levels) in <top (required)>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
然后我跑了
git push heroku master
试图让它在同一水平,但我仍然有这个错误。有人知道我能做些什么来解决这个问题吗?任何帮助都将是惊人的 首先:据我所知,您可以重置db实例。如果正确,请继续阅读选项1: 备选案文1: 首先重置数据库: heroku pg:reset如上所述 然后确认确实已删除冲突迁移。如果需要,继续任何git推送 此时,请重新迁移数据库:
heroku运行rake数据库:迁移
备选案文2:
如果您不打算重置数据库,请在下面进行评论。这会变得更加棘手,正确的解决方案可能是更多的迁移或回滚来修复您的模式 首先:据我所知,您可以重置db实例。如果正确,请继续阅读选项1: 备选案文1: 首先重置数据库: heroku pg:reset如上所述 然后确认确实已删除冲突迁移。如果需要,继续任何git推送 此时,请重新迁移数据库:
heroku运行rake数据库:迁移
备选案文2:
如果您不打算重置数据库,请在下面进行评论。这会变得更加棘手,正确的解决方案可能是更多的迁移或回滚来修复您的模式 首先:据我所知,您可以重置db实例。如果正确,请继续阅读选项1: 备选案文1: 首先重置数据库: heroku pg:reset如上所述 然后确认确实已删除冲突迁移。如果需要,继续任何git推送 此时,请重新迁移数据库:
heroku运行rake数据库:迁移
备选案文2:
如果您不打算重置数据库,请在下面进行评论。这会变得更加棘手,正确的解决方案可能是更多的迁移或回滚来修复您的模式 首先:据我所知,您可以重置db实例。如果正确,请继续阅读选项1: 备选案文1: 首先重置数据库: heroku pg:reset如上所述 然后确认确实已删除冲突迁移。如果需要,继续任何git推送 此时,请重新迁移数据库:
heroku运行rake数据库:迁移
备选案文2:
如果您不打算重置数据库,请在下面进行评论。这会变得更加棘手,正确的解决方案可能是更多的迁移或回滚来修复您的模式 一旦添加了迁移,当项目存在时,它将一直是必需的。因此,您只能添加迁移,而不能删除迁移。如果您在迁移规则中犯了错误,只需添加另一个shell恢复或修复更改的规则
请参阅关于如何执行或重做迁移的说明,并确保在本地PC上从头开始重新初始化DB,否则您需要修复迁移,只有这样您才能将shell推入heroku。添加迁移后,当项目存在时,它始终是必需的。因此,您只能添加迁移,而不能删除迁移。如果您在迁移规则中犯了错误,只需添加另一个shell恢复或修复更改的规则
请参阅关于如何执行或重做迁移的说明,并确保在本地PC上从头开始重新初始化DB,否则您需要修复迁移,只有这样您才能将shell推入heroku。添加迁移后,当项目存在时,它始终是必需的。因此,您只能添加迁移,而不能删除迁移。如果您在迁移规则中犯了错误,只需添加另一个shell恢复或修复更改的规则
请参阅关于如何执行或重做迁移的说明,并确保在本地PC上从头开始重新初始化DB,否则您需要修复迁移,只有这样您才能将shell推入heroku。添加迁移后,当项目存在时,它始终是必需的。因此,您只能添加迁移,而不能删除迁移。如果您在迁移规则中犯了错误,只需添加另一个shell恢复或修复更改的规则
请参阅有关如何执行或重做迁移的说明,并确保在本地PC上从头开始重新初始化DB,否则您需要修复迁移,只有这样您才能将shell推入heroku。您是在本地还是在heroku命令上收到该消息的?从
bundle exec rake db:migrate
或从heroku run rake db:migrate
在迁移之前进行拖放和创建,对吗?您已经删除了该文件,但git add不会将其从存储库中删除。git rm听起来更像您想要的。@nzifnab我从heroku命令中得到了消息。请参考答案,并确保在本地pc上从头开始重新初始化DB,否则您需要修复迁移,然后才可以将shell推入heroku。您是在本地还是在heroku命令中得到该消息的?从bundle exec rake db:migrate
或从heroku run rake db:migrate
在迁移之前进行拖放和创建,
git push heroku master