耙分贝:结构:下的PostgreSQL /滑轨3.2转储失败(rake db:structure:d

2019-09-16 15:20发布

我收到此错误信息:

pg_dump: too many command-line arguments (first is "demo_db")
Try "pg_dump --help" for more information.
rake aborted!
Error dumping database

Tasks: TOP => db:structure:dump
(See full trace by running task with --trace)

过去,这下的Rails 3.1的工作。 我使用Rails 3.2.3和PostgreSQL 9.0.5。 其他任务,如分贝:迁移或DB:回滚的工作就好了。

Answer 1:

pg_dump命令在执行了activerecord / LIB / active_record / railties / databases.rake在线路428 。

`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与嵌入式空间将解析为局部模式名,然后这是不是一个选项前面一个字,所以psql将其解释为数据库名,然后抱怨当它到达真正的数据库名称后。



Answer 2:

由于dbenhur我发现这个问题。 我在我的文件名的路径的空间。 更改的行392 activerecord/lib/active_record/railties/databases.rake

pg_dump -i -s -x -O -f '#{filename}' #{search_path} #{abcs[Rails.env]['database']}

(添加周围的单引号#{filename} )修复该问题。



Answer 3:

我有一个分贝问题呈三角:结构:转储在我的设置。 导轨3.2.11 +的JRuby 1.7.1 [1.8模式] PostgreSQL的9.1.7。

这真的帮了唯一的办法就是从1.2.5版本降级activerecord_jdbc_adapter到1.2.2。

gem 'activerecord-jdbc-adapter', '1.2.2'
gem "activerecord-jdbcpostgresql-adapter", '1.2.2'

希望这将帮助任何人。



Answer 4:

我通过创建的PostgreSQL数据库新的应用程序(固定这个(黑)问题rails new MyApp -d postgresql ),然后我所有的旧的应用程序文件(/ app文件夹,迁移,以及一些/配置文件)移动到新的一个。 现在,当我运行耙分贝:迁移,没有pg_dump的错误。 我希望这可以帮助别人。



文章来源: rake db:structure:dump fails under PostgreSQL / Rails 3.2