我刚刚使用PostgreSQL 9.4.7在aws beanstalk上设置了一个Django应用程序。我的数据库设置如下;
if 'RDS_DB_NAME' in os.environ:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ['RDS_DB_NAME'],
'USER': os.environ['RDS_USERNAME'],
'PASSWORD': os.environ['RDS_PASSWORD'],
'HOST': os.environ['RDS_HOSTNAME'],
'PORT': os.environ['RDS_PORT'],
}
}
我已经安装了psycopg2。
AWS应用程序安装成功完成但是当我通过索引页面打开时,我收到以下错误。
Exception Type: RuntimeError
Exception Value:
Error creating new content types. Please make sure contenttypes is migrated before trying to migrate apps individually.
进一步挖掘异常页面我发现了这个错误
**Variable**
my_list
**Value**
Error in formatting: OperationalError: fe_sendauth: no password supplied
**request**
<WSGIRequest: GET '/new/'>
my_list是索引页面视图中定义的变量。
在页面下方,我可以看到DB值正确更新。
检查我尝试通过pgadmin访问aws RDS的密码是否存在问题,并且能够成功完成,所以没有问题。
我尝试过很多东西但是找不到解决方案,所以需要一些帮助。
编辑:我在连接pgadmin之后还检查了表,并且可以确认所有表都是通过aws数据库上的migrate命令(在aws .config文件中创建)创建的。只是考虑分享这个以防万一这有用。
编辑2:所以在错误页面上,如果我进入设置部分,我可以看到id和密码反映(传入********表单)。但是在Traceback部分中,我可以看到密码是None,但其余的信息都在那里,这个错误是;
/opt/python/run/venv/lib64/python2.7/site-packages/psycopg2/__init__.py in connect
conn = _connect(dsn, connection_factory=connection_factory, async=async)
EDIT3:所以我从数据库中获取了除密码之外的所有内容,我在aws ssh实例上检查了/ opt / python / current中的env文件,发现它已正确列出所有导出设置,包括密码。
为了更明确,下面我已经提到了我在网页详细信息下的追溯上获得的异常细节
/opt/python/run/venv/lib64/python2.7/site-packages/psycopg2/的初始化的.py 在连接 conn = _connect(dsn,connection_factory = connection_factory,async = async)
**Variable Value**
database 'xxx' - This is correct
items [('dbname', 'xxx'), This is correct
('user', 'xxxxx'), This is correct
('host', 'xxxxxxx.rds.amazonaws.com'), This is correct
('port', '5432')]
k 'port'
kwargs {}
connection_factory None
dsn 'dbname=xxxx user=xxxx host=xxxx.rds.amazonaws.com port=5432' This is correct
host 'xxxx.rds.amazonaws.com' This is correct
user 'xxxxx' This is correct
v '5432' async False
**password None** **THIS IT NOT CORRECT**
port '5432'
cursor_factory None
答案 0 :(得分:2)
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-rds.html
在你的情况下,我会尝试去
- 配置您的Amazon RDS数据库安全组,以允许从Elastic Beanstalk使用的Amazon EC2安全组进行访问 应用
醇>
部分
<强>更新强>
不要忘记在os环境中反斜杠变量值如RDS_PASSWORD。例如,export RDS_PASSWORD="pa$$word"
应该变为export RDS_PASSWORD="pa\$\$word"
要做到这一点; 在ssh ec2实例上并转到文件
的/ opt /蟒/电流
。这个目录有一个app目录,它包含django应用程序和一个env文件。 “nano env”,它显示了许多导出语句转到RDS_PASSWORD行并添加了黑色传递给它。
导出RDS_PASSWORD =“pa \ $ \ $ word”。保存文件。
然后在aws上重新启动应用程序,它就像一个魅力。