AWS - DJANGO - Error in formatting: OperationalError: fe_sendauth: no password supplied
AWS - DJANGO - Error in formatting: OperationalError: fe_sendauth: no password supplied
我刚刚使用 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是索引页面视图中定义的变量。
在页面的下方,我可以看到数据库值已正确更新。
为了检查密码是否有问题,我尝试通过 pgadmin 访问 aws RDS,并且能够成功访问,所以没有问题。
我尝试了很多方法,但无法找到解决方案,因此需要一些帮助。
编辑:在与 pgadmin 连接后,我还检查了表,可以确认所有表都已通过迁移命令(在 aws .config 文件中创建)在 aws 数据库上创建。只是想分享这个以防它有帮助。
编辑 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 中找到的环境文件,发现它正确列出了所有导出设置,包括密码。
更明确地说,下面我提到了我在
下的网页详细信息的回溯中获得的异常详细信息
/opt/python/run/venv/lib64/python2.7/site-packages/psycopg2/init.py
in connect
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
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-rds.html
在你的情况下,我会尝试
- Configure your Amazon RDS DB security group to allow access from the Amazon EC2 security group used by your Elastic Beanstalk
application
部分
更新:
不要忘记在 os 环境中反斜杠变量值,例如 RDS_PASSWORD。例如 export RDS_PASSWORD="pa$$word"
应该变成 export RDS_PASSWORD="pa$$word"
要做到这一点,请前往;
在 ssh ec2 实例上并转到文件
/opt/python/current
。这个目录有一个 app 目录,其中包含 django 应用程序和一个 env 文件。 "nano env" 它显示很多导出语句转到 RDS_PASSWORD 行并向其添加黑斜杠传递。
导出 RDS_PASSWORD="pa$$word"。保存文件。
然后在 aws 上重新启动应用程序,它就像一个魅力。
我刚刚使用 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是索引页面视图中定义的变量。
在页面的下方,我可以看到数据库值已正确更新。
为了检查密码是否有问题,我尝试通过 pgadmin 访问 aws RDS,并且能够成功访问,所以没有问题。
我尝试了很多方法,但无法找到解决方案,因此需要一些帮助。
编辑:在与 pgadmin 连接后,我还检查了表,可以确认所有表都已通过迁移命令(在 aws .config 文件中创建)在 aws 数据库上创建。只是想分享这个以防它有帮助。
编辑 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 中找到的环境文件,发现它正确列出了所有导出设置,包括密码。
更明确地说,下面我提到了我在
下的网页详细信息的回溯中获得的异常详细信息/opt/python/run/venv/lib64/python2.7/site-packages/psycopg2/init.py in connect 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
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-rds.html
在你的情况下,我会尝试
- Configure your Amazon RDS DB security group to allow access from the Amazon EC2 security group used by your Elastic Beanstalk application
部分
更新:
不要忘记在 os 环境中反斜杠变量值,例如 RDS_PASSWORD。例如 export RDS_PASSWORD="pa$$word"
应该变成 export RDS_PASSWORD="pa$$word"
要做到这一点,请前往; 在 ssh ec2 实例上并转到文件
/opt/python/current
。这个目录有一个 app 目录,其中包含 django 应用程序和一个 env 文件。 "nano env" 它显示很多导出语句转到 RDS_PASSWORD 行并向其添加黑斜杠传递。
导出 RDS_PASSWORD="pa$$word"。保存文件。
然后在 aws 上重新启动应用程序,它就像一个魅力。