在 Heroku 上执行 rake db:migrate 时出错
Posted
技术标签:
【中文标题】在 Heroku 上执行 rake db:migrate 时出错【英文标题】:Error when doing rake db:migrate on Heroku 【发布时间】:2012-09-06 22:57:48 【问题描述】:什么时候做
heroku run rake db:migrate
执行所有迁移,然后,最后我总是收到以下消息:
/app/vendor/bundle/ruby/1.9.1/bin/rake: No such file or directory - pg_dump -i -s -x -O -f /app/db/structure.sql dan79p98fykovu
我无法将 pg_dump 添加到 Heroku 上的 PATH。 如何处理?
【问题讨论】:
您的 Gemfile 中有什么?可能是您有一个 gem 试图在依赖于该 pg_dump 的迁移之后执行一些代码。在我使用 RSpec 进行测试时,每次运行与 Test::Unit 相关的 rake 任务运行后,我都会收到一条错误消息 - 有点类似的问题 看看这个 SO 问题:***.com/questions/10248893/… 可能是您使用的 Rails 版本存在此错误/问题 - 您使用的是什么版本? 【参考方案1】:问题是一旦迁移完成,rails 会尝试转储新的structure.sql
,但由于pg_dump
不存在而失败。为已部署的应用生成新的 structure.sql 是没有意义的,因此最好的解决方案是告诉 rails 不要这样做。
编辑您的Rakefile
并覆盖该任务。在它的末尾添加以下行应该可以做到:
Rake::Task["db:structure:dump"].clear if Rails.env.production?
【讨论】:
n.b.:这仅在使用 structure.sql 时发生,而不在使用 schema.rb 时发生unless Rails.env.development?
不是更好的条件吗?
为什么pg_dump
不存在?
生产应用程序不需要它。以上是关于在 Heroku 上执行 rake db:migrate 时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用参数在 Heroku 上运行 rake 任务并指定 Heroku 应用程序
如何在 Heroku 上 rake db:drop 和 rake db:create? [复制]
如何解决极其缓慢的 rake assets:在 heroku 上预编译?