【问题标题】:Getting django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module, while trying to perform the first migration获取 django.core.exceptions.ImproperlyConfigured:加载 MySQLdb 模块时出错,同时尝试执行第一次迁移
【发布时间】:2019-05-21 17:22:03
【问题描述】:

我正在为我的应用程序设置一个 Django 后端。我正在尝试将默认的 sqlite 数据库更改为 mysql。在执行 first 迁移时,我收到以下错误:

Traceback(最近一次调用最后一次):文件 "/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/db/backends/mysql/base.py", 第 15 行,在 导入 MySQLdb 作为数据库文件 "/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/MySQLdb/init.py", 第 18 行,在 导入_mysql ImportError:dlopen(/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/_mysql.cpython-36m-darwin.so, 2):库未加载:@rpath/libmysqlclient.21.dylib 引用 从: /Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/_mysql.cpython-36m-darwin.so 原因:找不到图片

上述异常是以下异常的直接原因:

Traceback(最近一次调用最后一次):文件“manage.py”,第 15 行,在 execute_from_command_line(sys.argv) 文件“/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/core/management/init.py”, 第 381 行,在 execute_from_command_line utility.execute() 文件“/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/core/management/init.py”, 第 357 行,执行中 django.setup() 文件“/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/init.py”, 第 24 行,在设置中 apps.populate(settings.INSTALLED_APPS) 文件“/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/apps/registry.py”, 第 112 行,在填充 app_config.import_models() 文件“/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/apps/config.py”, 第 198 行,在 import_models 中 self.models_module = import_module(models_module_name) 文件 "/Users/user1/djangoApp/djangoProject/env/lib/python3.6/importlib/init.py", 第 126 行,在 import_module 中 return _bootstrap._gcd_import(name[level:], package, level) File "", line 994, in _gcd_import File "",第 971 行,在 _find_and_load 文件中 “”,第 955 行,在 _find_and_load_unlocked 文件“”,第 665 行,在 _load_unlocked
文件“”,第 678 行,在 exec_module 文件“”,第 219 行,在 _call_with_frames_removed 文件“/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/contrib/auth/models.py”, 第 2 行,在 从 django.contrib.auth.base_user 导入 AbstractBaseUser、BaseUserManager 文件 "/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/contrib/auth/base_user.py", 第 47 行,在 类 AbstractBaseUser(models.Model):文件“/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/db/models/base.py”, 第 101 行, new_class.add_to_class('_meta', Options(meta, app_label)) 文件 "/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/db/models/base.py", 第 305 行,在 add_to_class value.contribute_to_class(cls, name) 文件“/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/db/models/options.py”, 第 203 行,contribute_to_class self.db_table = truncate_name(self.db_table, connection.ops.max_name_length()) 文件 "/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/db/init.py", 第 33 行,在 getattr 中 返回getattr(连接[DEFAULT_DB_ALIAS],项目)文件“/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/db/utils.py”, 第 202 行,在 getitem 中 后端 = load_backend(db['ENGINE']) 文件 "/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/db/utils.py", 第 110 行,在 load_backend return import_module('%s.base' % backend_name) 文件 "/Users/user1/djangoApp/djangoProject/env/lib/python3.6/importlib/init.py", 第 126 行,在 import_module 中 return _bootstrap._gcd_import(name[level:], package, level) 文件“/Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/db/backends/mysql/base.py” , 第 20 行,在 ) 来自 err django.core.exceptions.ImproperlyConfigured: 加载 MySQLdb 模块时出错。

  • 操作系统:macOS Mojave
  • 框架:Django
  • 我正在使用虚拟环境

我已经使用命令安装了“mysqlclient”

pip3 安装 mysqlclient

我已验证安装位置下存在mysqlclient文件夹。

我已经启动并运行了 mysql 服务器。

我在网上尝试了许多可用的解决方案,但没有任何效果

重现:

1 - 使用

启动一个 django 项目

“django-admin startproject djangoApp”

2 - 安装并启动 mysql 服务器。

3 - 将入口应用的settings.py文件更新为如下

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djangoApp',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': ''
    }
}

4 - 现在尝试迁移使用

python manage.py 迁移

预期:迁移应该会成功

实际:迁移失败并出现给定错误

我是 Django 新手

【问题讨论】:

  • P.S. djangoApp 是我的 django 项目以及我的数据库的名称
  • 你运行过“python manage.py makemigrations”吗?
  • 回溯显示您没有在 virtualenv 中安装 Django。 virtualenv在哪里,你是怎么激活的,是你安装Django和mysqlclient的时候激活的吗?
  • @Mohit Harshan 我也无法运行该命令
  • @DanielRoseman 感谢您指出这一点。我发布了不正确的回溯。我使用命令“source env/bin/activate”激活了它,当我在我的 virtualenv 中运行该命令时,我得到了相同的回溯。

标签: mysql django


【解决方案1】:

我需要将 lib 文件符号链接到 /usr/local/lib 目录。

Fourth answer in the link worked for me

感谢@Mohit Harshan @Daniel Rosema 抽出时间帮助我

【讨论】:

    猜你喜欢
    • 2013-03-13
    • 2020-10-08
    • 2017-04-22
    • 2013-02-25
    • 2018-09-28
    • 2012-08-28
    • 2021-04-08
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多