【问题标题】:I get an mysqlclient error when run migration in Django在 Django 中运行迁移时出现 mysqlclient 错误
【发布时间】:2020-01-06 20:59:01
【问题描述】:

我安装 Django 并尝试连接到 MySQL 并运行迁移,我收到错误“你安装了 mysqlclient 吗?”。

我该怎么办?

我正在使用 venv,我的 python 版本是 3.7.4,mysql 是 8.0.17 版本,用于 x86_64(自制)上的 osx10.14。 这是点子列表

Package             Version    
------------------- -----------
beautifulsoup4      4.6.0      
certifi             2019.6.16  
chardet             3.0.4      
Django              2.2.5      
django-modelcluster 4.4        
django-taggit       0.24.0     
django-treebeard    4.3        
djangorestframework 3.10.2     
draftjs-exporter    2.1.6      
entrypoints         0.3        
flake8              3.7.4      
html5lib            1.0.1      
idna                2.8        
mccabe              0.6.1      
mysqlclient         1.4.2.post1
Pillow              6.1.0      
pip                 19.0.3     
pycodestyle         2.5.0      
pyflakes            2.1.1      
pytz                2019.2     
requests            2.22.0     
setuptools          40.8.0     
six                 1.12.0     
sqlparse            0.3.0      
Unidecode           1.1.1      
urllib3             1.25.3     
wagtail             2.6.1      
wagtailcodeblock    1.15.0.0   
webencodings        0.5.1      
Willow              1.1  
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'local_test',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '',
        'PORT': '',
        'OPTIONS': {
            'charset': 'utf8mb4',
        }
    }
}
Traceback (most recent call last):
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 15, in <module>
    import MySQLdb as Database
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/MySQLdb/__init__.py", line 18, in <module>
    from . import _mysql
ImportError: dlopen(/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so, 2): Library not loaded: @rpath/libssl.1.0.0.dylib
  Referenced from: /Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so
  Reason: image not found

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "../manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 357, in execute
    django.setup()
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/apps/registry.py", line 114, in populate
    app_config.import_models()
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/apps/config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/Users/bicepper/PycharmProjects/test-project/test/base/models.py", line 3, in <module>
    from modelcluster.models import ClusterableModel
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/modelcluster/models.py", line 153, in <module>
    class ClusterableModel(models.Model):
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/db/models/base.py", line 117, in __new__
    new_class.add_to_class('_meta', Options(meta, app_label))
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/db/models/base.py", line 321, in add_to_class
    value.contribute_to_class(cls, name)
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/db/models/options.py", line 204, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/db/__init__.py", line 28, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/db/utils.py", line 201, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/db/utils.py", line 110, in load_backend
    return import_module('%s.base' % backend_name)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/Users/bicepper/PycharmProjects/test-project/venv/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 20, in <module>
    ) from err
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

【问题讨论】:

  • 你修好了吗?我遇到了同样的错误,我可以启动我的 django 服务器,但我无法进行任何迁移。

标签: python mysql django python-3.x


【解决方案1】:

激活 venv 并运行 pip install mysql-python。确保在安装 mysql-python 库之前使用 venv 执行了 pip install -U pip

【讨论】:

  • 又出现一个错误ModuleNotFoundError: No module named 'ConfigParser'。看来mysql-python不支持python3。
【解决方案2】:

我会使用mysqlclient,您可以使用pip install mysqlclient 安装它。

确保您在虚拟环境中工作,并且您可能不应该在同一环境中使用 mysqlclientmysql-python,否则可能会出现问题(不过我不确定)。

我从来没有用过mysql-python,所以我不能对那个包说太多。

【讨论】:

  • 是的,我已经确认我在虚拟环境中并且安装了mysqlclient。
猜你喜欢
  • 2016-12-29
  • 2015-07-26
  • 1970-01-01
  • 2014-10-07
  • 2018-11-01
  • 2017-06-28
  • 1970-01-01
  • 2020-05-01
  • 2018-03-06
相关资源
最近更新 更多