Reputation: 54121
I get this error message:
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)
This used to work under Rails 3.1. I'm using Rails 3.2.3 and PostgreSQL 9.0.5. Other tasks like db:migrate or db:rollback work just fine.
Upvotes: 4
Views: 4732
Reputation: 20408
The pg_dump
command is executed in activerecord/lib/active_record/railties/databases.rake at line 428.
`pg_dump -i -s -x -O -f #{Shellwords.escape(filename)} #{search_path} #{Shellwords.escape(config['database'])}`
Try setting a breakpoint there and seeing what actual command is being run.
All those options are valid for Pg9.0.x, so I suspect there's something funny in abcs[Rails.env]['schema_search_path']
which confuses psql's option parsing. Note the search_path
construction doesn't quote the --schema
argument, so a search_path_part
with an embedded space will parse as a partial schema name followed by a word which isn't preceded by an option, so psql will interpret it as a database name, then complain when it gets to the real database name later.
Upvotes: 7
Reputation: 656
I had a simillar problem with db:structure:dump on my setup. Rails 3.2.11 + JRuby 1.7.1[1.8 mode] Postgresql 9.1.7.
The only thing which really helped was downgrading activerecord_jdbc_adapter from version 1.2.5 to 1.2.2.
gem 'activerecord-jdbc-adapter', '1.2.2'
gem "activerecord-jdbcpostgresql-adapter", '1.2.2'
Hope it will help anybody.
Upvotes: 1
Reputation: 1693
I fixed this (dark) issue by creating a new app with postgresql as database (rails new MyApp -d postgresql
), and then move all my old app files (/app folder, migrations, and some /config files) to new one. Now when I run rake db:migrate, there are no pg_dump error. I hope this helps someone.
Upvotes: 0
Reputation: 54121
Thanks to dbenhur I found the issue. I have a space in the path of my filename.
Changing line 392 of activerecord/lib/active_record/railties/databases.rake
to
pg_dump -i -s -x -O -f '#{filename}' #{search_path} #{abcs[Rails.env]['database']}
(adding the single quotes around #{filename}
) fixes the issue.
Upvotes: 5