作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我跑了 pg:reset
在 Heroku 上并尝试运行 db:migrate
,所有迁移都运行,但迁移失败并显示以下错误和跟踪:
rake aborted!
Error dumping database
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0.rc2/lib/active_record/tasks/postgresql_database_tasks.rb:55:in `structure_dump'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0.rc2/lib/active_record/tasks/database_tasks.rb:142:in `structure_dump'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0.rc2/lib/active_record/railties/databases.rake:288:in `block (3 levels) in <top (required)>'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0.rc2/lib/active_record/railties/databases.rake:51:in `block (2 levels) in <top (required)>'
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0.rc2/lib/active_record/railties/databases.rake:45:in `block (2 levels) in <top (required)>'
command = "pg_dump -i -s -x -O -f #{Shellwords.escape(filename)} #{search_path} #{Shellwords.escape(configuration['database'])}"
raise 'Error dumping database' unless Kernel.system(command)
最佳答案
这是一个有趣的错误,事实证明,它可以被忽略。基于它正在尝试执行 db:structure:dump 的事实,您正在使用 'sql' 作为您的 active_record.schema_format。 rake 任务 db:structure:dump 将在 heroku 上失败,因为 pg_dump(不出所料)不在二进制路径中。有趣的是,Heroku states不支持 db:schema:dump 但如果您将架构格式设置为 ruby,它就可以正常工作。
在 Rails 3 中,dump 任务只会在命令的退出代码为 1 时引发错误。在基于 unix 的系统上,如果找不到该命令,则退出代码为 127。因此,即使 pg_dump 命令在 rails 3 上失败(确实如此),它不会引发错误,也不会停止 rake 任务。所以任何在 Rails 3 中使用 sql 模式格式的人都不会遇到这个问题,因为它会默默地失败。 Rails 4 中的重构以在转储失败时正确引发错误导致 db:migrate 在 Heroku 上引发错误。然而,即使它出错 rake aborted
ddl 实际执行并提交 .
可能的解决方案:
config/environments/production.rb
:config.active_record.schema_format = :ruby
if Rails.env == 'production'
Rake::Task["db:structure:dump"].clear
end
关于ruby-on-rails - 迁移不适用于 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17300341/
我是一名优秀的程序员,十分优秀!