繁体   English   中英

将 django 部署到 AWS Lambda 连接到 RDS MySQL,显示错误:NameError: name '_mysql' is not defined

[英]Deploying django to AWS Lambda connecting to RDS MySQL, showing error: NameError: name '_mysql' is not defined

使用连接到 RDS MySQL 的 zappa 将 django 部署到 AWS Lambda,无法部署显示错误: NameError:名称“_mysql”未定义:

zappa update dev给出错误:错误:警告。 已部署 lambda 的状态检查失败。 对“/”的 GET 请求产生了 502 响应代码

AWS Cloudwatch 日志:

名称“_mysql”未定义:NameError Traceback(最近一次调用最后一次):文件“/var/task/handler.py”,第 609 行,在 lambda_handler 返回 LambdaHandler.lambda_handler(事件,上下文)文件“/var/task/ handler.py”,第 240 行,在 lambda_handler handler = cls() 文件“/var/task/handler.py”,第 146 行,在init wsgi_app_function = get_django_wsgi(self.settings.DJANGO_SETTINGS) 文件“/var/task/zappa /ext/django_zappa.py",第 20 行,在 get_django_wsgi 返回 get_wsgi_application() 文件 "/var/task/django/core/wsgi.py",第 12 行,在 get_wsgi_application django.setup(set_prefix=False) 文件 "/var /task/django/ init .py",第 24 行,在 setup apps.populate(settings.INSTALLED_APPS) 文件中 "/var/task/django/apps/registry.py",第 114 行,在填充 app_config.import_models() 文件中“/var/task/django/apps/config.py”,第 211 行,在 import_models self.models_module = import_module(models_module_name) 文件“ /var/lang/lib/python3.6/importlib/init .py”,第 126 行, 在 import_module 返回 _boots trap._gcd_import(名称[级别:],package,级别)文件“”,第 994 行,在 _gcd_import 文件中“”,第 971 行,在 _find_and_load 文件中“”,第 955 行,在 _find_and_load_unlocked 文件中“”,第 665 行,在 _load_unlocked
文件“”,第 678 行,在 exec_module 文件“”,第 219 行,在 _call_with_frames_removed 文件“/var/task/django/contrib/auth/models.py”,第 2 行,从 django.contrib.auth.base_user 导入 AbstractBaseUser , BaseUserManager 文件 "/var/task/django/contrib/auth/base_user.py", 第 47 行, 在 class AbstractBaseUser(models.Model): 文件 "/var/task/django/db/models/base.py",第 121 行,在new_class.add_to_class ('_meta', Options(meta, app_label)) 文件“/var/task/django/db/models/base.py”中,第 325 行,在 add_to_class value.contribute_to_class(cls, name ) 文件“/var/task/django/db/models/options.py”,第 208 行,contribute_to_class self.db_table = truncate_name(self.db_table, connection.ops.max_name_length()) 文件“/var/task/django /db/ init .py”,第 28 行,在getattr返回 getattr(connections[DEFAULT_DB_ALIAS], item) 文件“/var/task/django/db/utils.py”,第 207 行,在getitem backend = load_backend(db[ 'ENGINE']) 文件 "/var/task/django/db/utils.py", l 第 111 行,在 load_backend return import_module('%s.base' % backend_name) File " /var/lang/lib/python3.6/importlib/init .py",第 126 行,在 import_module return _bootstrap._gcd_import(name[level :],package,级别)文件“/var/task/django/db/backends/mysql/base.py”,第 16 行,在导入 MySQLdb 作为数据库文件“/var/task/MySQLdb/ init .py”,行24、在version_info、_mysql.version_info、_mysql。 文件名错误:名称'_mysql'未定义

我的settings.py数据库配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'raags-instance', # DB Instance created in AWS RDS
        'USER': 'xyz',
        'PASSWORD': 'passwordpassword',
        'HOST': '*********.us-east-2.rds.amazonaws.com',
        'PORT': 3306,
    }
}

对于DATABASES = {}成功部署我是 zappa 部署和无服务器架构的新手,请协助,我无法在任何地方找到解决方案。 提前致谢

问题是由于MySQLdb目录中缺少.mysql文件

我尝试了解决方法并导入 pymysql 并安装.. goto django_project/django_project/ init .py文件( settings.py所在的同一目录)

添加以下内容。 代码并再次部署,这对我有用

import pymysql
pymysql.install_as_MySQLdb()

暂无
暂无

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

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