我在Heroku上运行了pg:reset
命令,尝试运行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)
这在本地运行没有任何问题,包括开发和生产环境。
有人经历过类似的情况吗?
config.active_record.schema_format = :sql
,这是在Railscasts第334集中为Postgres搜索添加GIN索引后所做的。那么,现在是否可以安全地更改application.rb
中的上述内容,或者应该将:sql
行移动到development.rb
中,并在production.rb
中使用:ruby
? - memohtstructure.sql
文件中保留PostgreSQL的GIN索引,我建议将:sql
保留在开发环境中。您可以在application.rb
文件中保持它为:sql
,然后只需在production.rb
中添加:ruby
即可。这样,您就可以使开发和测试环境下的结构文件保持一致。请注意,不要改变原文意思。 - Lukas EklundError: You must install at least one postgresql-client-<version> package.
这里为了易于搜索而添加。 - xmjw