我收到此错误消息:
pg_dump:太多的命令行参数(首先是“demo_db”) 尝试“pg_dump --help”以获取更多信息。 耙中止! 转储数据库时出错 任务:TOP => db:structure:dump (通过使用 --trace 运行任务查看完整跟踪)
这曾经在 Rails 3.1 下工作。我正在使用 Rails 3.2.3 和 PostgreSQL 9.0.5。其他任务,如 db:migrate 或 db:rollback 工作得很好。
我收到此错误消息:
pg_dump:太多的命令行参数(首先是“demo_db”) 尝试“pg_dump --help”以获取更多信息。 耙中止! 转储数据库时出错 任务:TOP => db:structure:dump (通过使用 --trace 运行任务查看完整跟踪)
这曾经在 Rails 3.1 下工作。我正在使用 Rails 3.2.3 和 PostgreSQL 9.0.5。其他任务,如 db:migrate 或 db:rollback 工作得很好。
该pg_dump
命令在第 428 行的 activerecord/lib/active_record/railties/databases.rake 中执行。
`pg_dump -i -s -x -O -f #{Shellwords.escape(filename)} #{search_path} #{Shellwords.escape(config['database'])}`
尝试在那里设置断点并查看正在运行的实际命令。
所有这些选项都对 Pg9.0.x 有效,所以我怀疑有些有趣的东西abcs[Rails.env]['schema_search_path']
会混淆 psql 的选项解析。请注意,该search_path
构造不引用--schema
参数,因此search_path_part
带有嵌入空格的 a 将解析为部分模式名称,后跟一个不以选项开头的单词,因此 psql 会将其解释为数据库名称,然后在出现时抱怨稍后获取真实的数据库名称。
感谢 dbenhur,我发现了这个问题。我的文件名路径中有一个空格。将第 392 行更改activerecord/lib/active_record/railties/databases.rake
为
pg_dump -i -s -x -O -f '#{filename}' #{search_path} #{abcs[Rails.env]['database']}
(在 周围添加单引号#{filename}
)解决了这个问题。
我在设置中遇到了与 db:structure:dump 类似的问题。Rails 3.2.11 + JRuby 1.7.1[1.8 模式] Postgresql 9.1.7。
唯一真正有帮助的是将 activerecord_jdbc_adapter 从版本 1.2.5 降级到 1.2.2。
gem 'activerecord-jdbc-adapter', '1.2.2'
gem "activerecord-jdbcpostgresql-adapter", '1.2.2'
希望它会帮助任何人。
我通过创建一个使用 postgresql 作为数据库 () 的新应用程序来解决这个(暗)问题rails new MyApp -d postgresql
,然后将我所有的旧应用程序文件(/app 文件夹、迁移和一些 /config 文件)移动到新文件。现在当我运行 rake db:migrate 时,没有 pg_dump 错误。我希望这可以帮助别人。