Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Heroku在Rake DB上崩溃:迁移_Ruby On Rails_Ruby_Heroku_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Heroku在Rake DB上崩溃:迁移

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

我已经发布了一个我正在做的项目,我终于让它按照我想要的方式工作了

我把我的东西上传到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]: 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