2017-06-10 23 views
1

RDSでPostgresを使用して新しいEC2インスタンスを作成しました。私は、EC2インスタンスからpsqlを使用してデータベースに接続できることを確認しました。何の問題もなく、私のセキュリティ設定は問題ありません。しかしDjango 1.11はRDSでPostgresに接続できません

、私は(virtualenvのから)manage.py runserverまたはmanage.py dbshellを実行しようとDjangoは最終的にタイムアウトエラーを与え、その後ハング:

psql: could not connect to server: Connection timed out Is the server running on host "whatever.rds.amazonaws.com" (172.xxx.xxx.xxx) and accepting TCP/IP connections on port 5342?

Traceback (most recent call last): File "manage.py", line 22, in execute_from_command_line(sys.argv) File "/home/ubuntu/Env/xxxx/lib/python3.5/site-packages/django/core/management/init.py", line 363, in execute_from_command_line utility.execute()

File "/home/ubuntu/Env/ss2017/lib/python3.5/site-packages/django/core/management/init.py", line 355, in execute self.fetch_command(subcommand).run_from_argv(self.argv)

File "/home/ubuntu/Env/ss2017/lib/python3.5/site-packages/django/core/management/base.py", line 283, in run_from_argv self.execute(*args, **cmd_options)

File "/home/ubuntu/Env/ss2017/lib/python3.5/site-packages/django/core/management/base.py", line 330, in execute output = self.handle(*args, **options)

File "/home/ubuntu/Env/ss2017/lib/python3.5/site-packages/django/core/management/commands/dbshell.py", line 22, in handle connection.client.runshell()

File "/home/ubuntu/Env/ss2017/lib/python3.5/site-packages/django/db/backends/postgresql/client.py", line 66, in runshell DatabaseClient.runshell_db(self.connection.get_connection_params())

File "/home/ubuntu/Env/ss2017/lib/python3.5/site-packages/django/db/backends/postgresql/client.py", line 58, in runshell_db subprocess.check_call(args)

File "/usr/lib/python3.5/subprocess.py", line 581, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['psql', '-U', 'db_name', '-h', 'whatever.rds.amazonaws.com', '-p', '5342', 'user_name']' returned non-zero exit status 2

私があったかどうかを確認するためのDjangoアプリの新しいコピーを作成してみましたファイルが壊れている可能性があります。私はsettings.pyファイルにいくつか変更を加えましたが、運はありません。

アイデア?

編集

Settings.py(重要なビット)

DEBUG = False 

ALLOWED_HOSTS = ['localhost', '0.0.0.0', '127.0.0.1', 'compute.amazonaws.com'] 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'database_name', 
     'USER': 'xxxxxxxx', 
     'PASSWORD': 'xxxxxxxx', 
     'HOST': 'whatever.us-west-2.rds.amazonaws.com', 
     'PORT': '5342', 
    } 
} 
+0

EC2 CLIから 'psql -U db_name -h something.rds.amazonaws.com -p 5432 user name'を実行しても問題はありませんか? –

+0

@DmitryPolonskiy - はい、私はEC2 CLIからpsqlコマンドを使用して問題なく接続できます。私は完全に混乱しています! –

+1

'manage.py'ファイルに' os.environ.setdefault( "DJANGO_SETTINGS"、 "settings") 'の行に沿って何かがありますか?また、あなたは 'localhost'にホストを変更しようとしました –

答えて

0

私はエラーが出てくるかどうかを確認するためにEC2サーバ上のローカルPostgresデータベースを作成することになりました。 makemigrationsまたはmigrateを実行してデータベースをセットアップしようとすると、「関係は存在しません」というエラーが表示されます。スタックトレースは次のようなものに見えた私のビューのいずれかに行を指摘:

some_queryset = Model.objects.all() 
some_queryset.delete() # <--- this line was the problem 

を、これは技術的に与えられたテーブル内のすべてのエントリを削除するには、許容可能な方法であっても、Djangoは(サーバ上)しませんでした与えられたモデルの関係が存在しないという事実のように。

私はこの行をコメントアウトし、問題なくデータベースに接続できました。

あなたのDjangoアプリがrunserverにハングアップするが、EC2インスタンスからRDSデータベースにアクセスできる場合は、ローカルデータベースを設定して問題をチェックしてみてください。

関連する問題