2

Rails 3.2.2 を使用して、sqlite から postgres 9.2 への移行を完了しました。postgres をインストールするためのガイドとしてこのチュートリアルの回答を使用し、ステップ 11 で行き詰まりましたheroku db:pull

Failed to connect to database: Sequel::AdapterNotFound -> LoadError: cannot load such file --pg

さらに深く掘り下げたところ、db:pull (taps gem) が非推奨であることがわかり、pg:transfer に関するいくつかの推奨事項に出くわしました。pg:transfer をインストールしましたが、実行した場合のように *nix のみ (?) である可能性があるという印象を受けheroku pg:transferます:

Heroku client internal error. No such file or directory - .env (Errno:ENOENT)

-f と -t を指定して pg:transfer を実行 'env' is not recognized as an internal or external command, operable program or batch fileすると、次のようになります。これは、パスにバインドされていないか、Windows のコマンドとして存在しないことを意味します。

上記のエラーについて何か考えはありますか?

4

2 に答える 2

1

Heroku ドキュメントでタップの代わりとして推奨されていた pg:backups gem を使用することで解決しました。このガイドを使用して、ダンプをドロップボックスにアップロードし、Heroku がピックアップできるようにしました。

手順とコマンドの正確なリストは次のとおりです。

  1. heroku.com アドオンからインスタンスに pgbackups を追加しました。
  2. heroku pgbackups:capture DATABASE(これはheroku dbをバックアップするだけです)
  3. pg_dump -h localhost -U <pg username> -Fc dbname > dbname.dump
  4. dbname.dump をドロップボックスのフォルダーに移動しました
  5. Dropbox で、dbname.dump を右クリック => [リンクを共有]
  6. 共有ダイアログのポップアップをキャンセルし、「ダウンロードボタン」を右クリックし、リンクアドレスをコピー (Chrome)
  7. heroku pgbackups:restore DATABASE <paste dropbox download link here>

Dropbox のトリッキー: Dropbox が提供するファイル リンクは使用しないでください。これは HTML リダイレクトであり、拡張子が .dump で終わっていてもpg:restore が失敗する原因となります。

代わりに、ドロップボックス ページに移動し、[ダウンロード] ボタンの [コピー リンク アドレスを右クリック] してください。これは、pgbackups:restore で使用するアドレスです (のようなものにする必要がありますdb.dump?token=<long random string>) 。

少し不格好ですが、仕事は完了しました。良い方法をご存知でしたら教えてください!

于 2013-04-15T16:21:10.167 に答える
0

次のようなものを含む .env ファイルを作成する必要があります。

DATABASE_URL=postgres://localhost/myapp_development

参考文献:

于 2013-04-14T02:58:19.580 に答える