解決Django使用mysqlclient連接MySQL,而無法pip install mysqlclient 問題

解決Django使用mysqlclient連接MySQL,而無法pip install mysqlclient 問題

詳情:
    該問題主要出現在Django在Ubuntu系統中連接MySQL時會報錯:
    
        django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
        Did you install mysqlclient?
        
    然而,ubuntu安裝mysqlclient時會出現很多麻煩的問題

策略:使用pymysql連接MySQL

  • 安裝pymysql
pip3 install pymysql
  • 修改項目的__init__.py
import pymysql
pymysql.install_as_MySQLdb()

此時運行項目,會保錯:

......
File "/home/brightxu/Django/WGApps/venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 36, in <module>
    raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

主要是pymysql與mysqlclient版本不一致的問題

  • 修改環境

根據錯誤提示,打開文件venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py ,找到第36行代碼,將34 ~ 36 行的代碼註釋掉:

# version = Database.version_info
# if version < (1, 3, 13):
#     raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)

然後還會保錯:

......
File "/home/brightxu/Django/WGApps/venv/lib/python3.6/site-packages/django/db/backends/mysql/operations.py", line 146, in last_executed_query
    query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'

根據錯誤提示,打開文件venv/lib/python3.6/site-packages/django/db/backends/mysql/operations.py ,找到第146行代碼,將145和 146 行的代碼註釋掉:

        # if query is not None:
        #     query = query.decode(errors='replace')
  • 然後就可以愉快的玩耍了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章