首页 > 解决方案 > 从连接到 GCP 中部署的 Django 应用程序的 MongoDB 验证用户时出现数据库错误

问题描述

我在 Google Cloud Platform 中部署了一个 Django 应用程序。我正在使用 MongoDB 地图集来存储用户的数据。我可以通过在本地主机上运行它来成功注册和登录。但是当我尝试直接从应用程序的 URL 注册/登录时,它会给出数据库错误。在 settings.py 文件中,我给出了 MongoDB 数据库的连接字符串。我如何能够通过部署在 GCP 中的应用程序访问存储在 MongoDB 中的数据?

使用的资源是 App Engine 以及要部署的 Cloud SDK。

settings.py 文件中的数据库连接如下:

DATABASES = {
    'default': {
        
        
        'ENGINE': 'djongo',
        'CLIENT': {
            'name' : 'Example',
           'host':'mongodb+srv://username:password@[host]?retryWrites=true&w=majority',
            'username': 'username',
            'password': 'password',
            'authMechanism': 'SCRAM-SHA-1',
        },
    }
}

错误如下:

DatabaseError at /login
No exception message supplied
Request Method: POST
Request URL:    https://[PROJECT-ID].ew.r.appspot.com/login
Django Version: 3.0.5
Exception Type: DatabaseError
Exception Location: /env/lib/python3.7/site-packages/djongo/cursor.py in execute, line 59
Python Executable:  /env/bin/python3.7
Python Version: 3.7.9
Python Path:    
['/srv',
 '/env/bin',
 '/opt/python3.7/lib/python37.zip',
 '/opt/python3.7/lib/python3.7',
 '/opt/python3.7/lib/python3.7/lib-dynload',
 '/env/lib/python3.7/site-packages']
Server time:    Tue, 17 Nov 2020 12:48:36 +0000

The above exception ( Keyword: None Sub SQL: None FAILED SQL: ('INSERT INTO "django_session" ("session_key", "session_data", "expire_date") VALUES (%(0)s, %(1)s, %(2)s)',) Params: (('[REDACTED_SESSION_KEY]', '[REDACTED_SESSION_DATA]', datetime.datetime(2020, 12, 1, 12, 48, 35, 677384)),) Version: 1.3.3) was the direct cause of the following exception:
/env/lib/python3.7/site-packages/django/db/backends/utils.py in _execute
                return self.cursor.execute(sql, params) …
▼ Local vars
Variable    Value
ignored_wrapper_args    
(False,
 {'connection': <djongo.base.DatabaseWrapper object at 0x3e8871fc0790>,
  'cursor': <django.db.backends.utils.CursorDebugWrapper object at 0x3e8871afa790>})
params  
('[REDACTED_SESSION_KEY]',
 '[REDACTED_SESSION_DATA]',
 datetime.datetime(2020, 12, 1, 12, 48, 35, 677384))
self    
<django.db.backends.utils.CursorDebugWrapper object at 0x3e8871afa790>
sql 
('INSERT INTO "django_session" ("session_key", "session_data", "expire_date") '
 'VALUES (%s, %s, %s)')

Variable    Value
db_exe  
DatabaseError()
params  
('[REDACTED_SESSION_KEY]',
 '[REDACTED_SESSION_DATA]',
 datetime.datetime(2020, 12, 1, 12, 48, 35, 677384))
self    
<djongo.cursor.Cursor object at 0x3e8871afad90>
sql 
('INSERT INTO "django_session" ("session_key", "session_data", "expire_date") '
 'VALUES (%s, %s, %s)')

标签: djangomongodbgoogle-cloud-platform

解决方案


推荐阅读