乐趣区

django22安装错误最全的解决方案

安装报错类型,解决方案;

1. 数据库连接报错

mysqldb 只支持 python2,pymysql 支持 3,都是使用 c 写的驱动,性能更好

# django 中修改配置文件 setting.py 添加如下代码:import pymysql
pymysql.install_as_MySQLdb()

解决方案:

 修改数据库:mysqldb=>pymysql
2. 因为切换数据库导致版本错误
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.

解决方案:

 注释掉检测数据库版本的代码 
# "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 36, in <module>
 
# if version < (1, 3, 13):
#     raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
3. 切换数据库导致转码错误
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/mysql/operations.py", line 146, in last_executed_query
    query = query.decode(errors='replace')

解决方案:== 暂时使用第二种类型 ==

  1. 修改 decode 为 encode
  2. 把条件注释掉,防止出现不可预知的错误,这个错误很可能是 python2 中类型 str 和 unicode 的原因,python3 中只有 unicode 类型数据
# "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/mysql/operations.py", line 146

 # if query is not None:
      #query = query.encode(errors='replace')

解决完成之后完美运行

退出移动版