0

herokuに1つのdjangoアプリをデプロイしました。現在、すべてが正常に機能しています。ただし、既存のテーブルにもう1つのフィールドを追加する必要があります。models.pyファイルにスキーマの変更を追加しました。dbshel​​lに入力するために次のコマンドを試しました。

    heroku run python manage.py dbshell

ただし、次のエラーメッセージが表示されます。

エラー:「psql」プログラムがインストールされていないか、パス上にないようです。

どうすればこの問題を解決できますか?データベースに変更を追加するにはどうすればよいですか?私を助けてください。

4

3 に答える 3

2

manage.py dbshel​​l の代わりにheroku pg:psqlを使用してください。

于 2014-09-16T08:53:45.883 に答える
1

私は heroku について 100% 確信があるわけではありません (読んでください: 私はそれについて知りません) が、あなたが抱えている問題はかなり典型的なように聞こえます: 設定した後に Django データベースを変更したいのです。についてのちょっとした重要な注意syncdb:既存のテーブルは変更されません。

テーブルを変更するには、すべてのデータをダンプし、モデルを編集してから、そのすべてのデータを再度入力する必要があります。

ただし、他のオプションがあります。

より一般的な 2 つのオプションはdjango-evolutionSouthで、どちらにも独自の用途、長所/短所、および複雑さがあります。両方の詳細であなたを退屈させる(そしてその過程で他の誰かの努力を盗む)のではなく、私はSOからの役立つ質問を伝えます:

現在Django「Evolution」を使用していますが、「South」の方が優れており、切り替える価値がありますか?

(簡単な答えは次のようになります。 Southを使用します。少し学習曲線がありますが、設定後に django モデルを変更 (または移行) するための最も堅牢で完全なソリューションになります。

于 2013-03-06T19:05:52.060 に答える
0

私はこれと同じ問題を抱えていましたが、ドキュメントに欠けている明確な答えも見つけました。Heroku が推奨するように、本番データベースは開発データベースと同じにする必要があるため、すべての変更をローカルで行うことができます。

修正するには:

  1. 最新の Postgress アプリをダウンロードし、指示に従ってアプリケーション フォルダーに移動します。

  2. ターミナルで次のように入力し て、新しいバンドルをパスに追加します。PATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"

  3. 仮想環境に戻って実行してください。問題python manage.py dbshellないはずです。
于 2014-04-10T20:34:00.993 に答える