4

このエラーメッセージが表示されます:

pg_dump:コマンドライン引数が多すぎます(最初は「demo_db」です)
詳細については、「pg_dump--help」を試してください。
レーキが中止されました!
データベースのダンプ中にエラーが発生しました

タスク:TOP => db:structure:dump
(--traceを指定してタスクを実行することにより、完全なトレースを参照してください)

これは、Rails3.1で機能していました。Rails3.2.3とPostgreSQL9.0.5を使用しています。db:migrateやdb:rollbackなどの他のタスクは問題なく機能します。

4

4 に答える 4

7

この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引用しないことに注意してください。スペースが埋め込まれたaは、部分的なスキーマ名の後にオプションが前に付いていない単語が続くものとして解析されるため、psqlはそれをデータベース名として解釈し、それが発生すると文句を言います。後で実際のデータベース名に到達します。--schemasearch_path_part

于 2012-04-20T19:13:38.277 に答える
5

dbenhurのおかげで、私は問題を見つけました。ファイル名のパスにスペースがあります。の行392をactiverecord/lib/active_record/railties/databases.rakeに変更

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

(一重引用符を追加して#{filename})問題を修正します。

于 2012-04-20T21:50:25.623 に答える
1

セットアップのdb:structure:dumpで同様の問題が発生しました。Rails 3.2.11 + JRuby1.7.1[1.8モード]Postgresql9.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'

それが誰かを助けることを願っています。

于 2013-01-23T13:06:40.500 に答える
0

postgresqlをデータベース(rails new MyApp -d postgresql)として使用して新しいアプリを作成し、古いアプリファイル(/ appフォルダー、移行、および一部の/ configファイル)をすべて新しいアプリに移動することで、この(暗い)問題を修正しました。これで、rake db:migrateを実行しても、pg_dumpエラーは発生しません。これが誰かに役立つことを願っています。

于 2012-06-10T17:59:31.370 に答える