获取django.core.exceptions.ImproperlyConfigured:尝试执行第一次迁移时,加载MySQLdb模块时出错

时间:2018-12-21 08:23:02

标签: mysql django

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

  

回溯(最近通话最近):文件   “ /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   原因:找不到图片

     

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

     

回溯(最近一次通话最后一次):文件“ 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”,   在import_models中的第198行       self.models_module = import_module(models_module_name)文件“ /Users/user1/djangoApp/djangoProject/env/lib/python3.6/importlib/init.py”,   import_module中的第126行       在_gcd_import文件中,返回_bootstrap._gcd_import(name [level:],程序包,级别)文件“”,第994行   _find_and_load文件中的“”行971   “”,第955行,在_find_and_load_unlocked中   _load_unlocked中的文件“”,行665,
  在第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行,在       class 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',选项(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行,在功劳类别中       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       backend = load_backend(db ['ENGINE'])文件“ /Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/db/utils.py”,   第110行,在load_backend中       返回import_module('%s.base'%backend_name)文件“ /Users/user1/djangoApp/djangoProject/env/lib/python3.6/importlib/init.py”,   import_module中的第126行       返回_bootstrap._gcd_import(名称[级别:],程序包,级别)文件“ /Users/user1/djangoApp/djangoProject/env/lib/python3.6/site-packages/django/db/backends/mysql/base.py” ,   第20行,在       )从err django.core.exceptions.ImproperlyConfigured:加载MySQLdb模块时出错。

  • OS:macOS Mojave
  • 框架:Django
  • 我正在使用virtualenv

我已经使用命令安装了“ 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 migration

预期:迁移应该成功

实际:迁移失败,并显示给定错误

我是Django的新手

1 个答案:

答案 0 :(得分:0)

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

Fourth answer in the link worked for me

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