2013-06-11 16 views
10

似たような問題に関して多くの質問が寄せられていることは知っていますが、まだ取り組まれていない具体的な味があります。私は私のローカルpostgresqlデータベースを作成しようとしているので、私はHerokuにプッシュするだけでなく、ローカル開発を行うことができます。Herokuを使用してDjangoでローカル開発用postgresqlデータベースを設定する

'#DATABASES = {'default': dj_database_url.config(default='postgres://fooname:[email protected]/dbname')}' 

これは、エラーが設定されていない「ENGINE」を解決します

私は(私はほんの少し時代遅れだと思う)例えばこれを行う方法の基本的な答えを、発見しました。私は「のpython manage.py syncdbの実行」を実行したときしかし、私は次のエラーを取得する:

'OperationalError: FATAL: password authentication failed for user "foo" 
FATAL: password authentication failed for user "foo"' 

これは、ユーザー名/パスの考えられる全ての組み合わせのために起こります。だから私のubuntuのユーザー名/パス、私のherokuのユーザー名/パス、等もまた、私はちょうど私がチュートリアルの後にpostgresqlを使用していたかのようにHerokuコンポーネントを取り出して、ローカルに構築しようとする場合に発生します。私はまだデータベースを持っていないので、それらのユーザ名/パス値は何を参照していますか?問題は正確に、私はまずデータベースを作成する必要がありますか?もしそうなら、どのように?注意点として、私は私がここで説明するプロセスを使用してHerokuのからデシベルを得ることができる知っている

Should I have my Postgres directory right next to my project folder? If so, how?

しかし、どのようにアクセスする方法を知っているDjangoのだろう、どこのライブ新デシベルだろう、私はそうしていたと仮定するとそれは、私は同じユーザー/パスの問題がありますか?

ありがとうございます。

+0

'settings.py'全体を投稿できますか? –

+0

私が覚えているように、nix OSの場合、少なくともPostgres DBへのアクセスのためには、最初に "postgres"という名前のユーザーが必要です。 PGの経験は、Win、Ubunru、CentOSによって制限されています。 pg_ctl statusを実行してください。あなたのOSがTCPプロトコル経由でPostgresに受け入れられるかどうか確認してください。次に、postgres config pg_hba.confで受け入れ可能なアドレスを確認します。等々。最も簡単な方法は、Googleに問い合わせることです: "PostgreSQL" [YourOSName]そして、Pythonは他のDBMSと同様にPGとの関係はありません。 – Abelisto

答えて

18

あなたはpostgresがインストールされていると仮定して、pgadminまたはpsql経由で接続し、新しいユーザーを作成します。次に、新しいデータベースを作成し、新しいユーザーを所有者として使用します。新しいユーザとpsqlを使ってデータベースに接続できることを確認してください。 virtualenvのbinフォルダにあるpostactivateファイルにenv変数を設定して保存する必要があります。ここで私はデータベースの持っているものです。

export DATABASE_URL='postgres://{{username}}:{{password}}@localhost:5432/{{database}}' 

ちょうどノート:あなたのpostactivateにこの値を追加することは何もしません。ファイルは保存時には実行されません。これを$プロンプトで実行するか、単にvirtualenvを無効にしてアクティブにする必要があります。

あなたのsettings.pyは、このENVのVARから読み取る必要があります:あなたはその後、展開時に本番データベースを使用するようにCLIツールでHerokuのを設定します

DATABASES = {'default': dj_database_url.config()} 

。ような何か:

heroku config:set DATABASE_URL={{production value here}} 

(あなたはHerokuののCLIツールがインストールされていない場合、あなたはそれを行う必要があります)

あなたはどのように正確に何を本番データベースのために必要な、その値把握する必要がある場合は、 herokuのpostgresqlサブドメイン(これが書かれている時点ではhttps://postgres.heroku.com/)にログインし、リストからdbを選択して "Connection Settings:URL"の値を調べることで取得できます。

このように、同じsettings.py値はローカルとプロダクションの両方で機能し、ユーザー名/パスワードはバージョンコントロールから外してしまいます。これらは単にenvの設定値です。

+0

ダビデの助けをありがとう。私は以下の最初のステップを実行することができました:http://www.cyberciti.biz/faq/howto-add-postgresql-user-account/。 env変数の設定例、その変数、settings.pyの読み込み方法を投稿できますか?私はそのために少し混乱しています。 –

+0

@JohnLucas私はあなたの質問にお答えしようと私の答えを変えました。もっと助けが必要な場合は教えてください。 –

+0

ご協力いただきありがとうございます –

関連する問題