繁体   English   中英

AWS-DJANGO-格式错误:OperationalError:fe_sendauth:未提供密码

[英]AWS - DJANGO - Error in formatting: OperationalError: fe_sendauth: no password supplied

我刚刚使用PostgreSQL 9.4.7在AWS beantalk上设置了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数据库上的migration命令(在aws .config文件中创建)创建的。 只是想分享一下以防万一。

编辑2:在错误页面上,如果我进入设置部分,则可以看到ID和密码(以********形式传递)。 但是,在“回溯”部分中,我可以看到密码为“无”,但其余信息在那里,并且此错误是:

/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/ 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

就您而言,我应该尝试

  1. 配置您的Amazon RDS DB安全组以允许从您的Elastic Beanstalk应用程序使用的Amazon EC2安全组进行访问

部分

更新:不要忘记在操作系统环境中反斜杠变量值,如RDS_PASSWORD。 例如, export RDS_PASSWORD="pa$$word"应该成为export RDS_PASSWORD="pa\\$\\$word"

为此去; 在SSH EC2实例上并转到文件

/选择/蟒蛇/电流

该目录有一个应用程序目录,其中包含Django应用程序和一个env文件。 “ nano env”,它显示许多导出语句转到RDS_PASSWORD行,并在其中添加了反斜杠。

导出RDS_PASSWORD =“ pa \\ $ \\ $ word”。 保存文件。

然后在aws上重新启动该应用程序,它的工作原理就像一个魅力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM