django mysql报错_django mysql 版本报错.md

当Django尝试连接MySQL时遇到版本不兼容问题,可以尝试将MySQL驱动更改为pymysql并通过pip安装。此外,还可以选择将Django降级到2.1.4版本或直接修改django包中base.py和operations.py的特定代码来解决此问题。
摘要由CSDN通过智能技术生成

# django mysql 版本报错

## 解决方法:

Django 连接 MySQL 时默认使用 MySQLdb 驱动,但 MySQLdb 不支持 Python3,因此这里将 MySQL 驱动设置为 pymysql,使用 pip install pymysql 进行安装,然后在工程文件\_\_init\_\_.py 添加以下代码即可。

```shell

# 安装pymysql

pip3 install pymysql

```

```python

import pymysql

pymysql.install_as_MySQLdb()

```

### 第一种:

django 降到 2.1.4 版本就 OK 了

### 第二种(仍使用 django 2.2 版本):

```shell

#找到Python环境下 django包,并进入到backends下的mysql文件夹

cd ~/anaconda3/lib/python3.7/site-packages/django/db/backends/mysql

# 查看

ls

#文件列表如下

base.py creation.py introspection.py schema.py

client.py features.py operations.py validation.py

compiler.py __init__.py __pycache__

# 找到base.py文件,注释掉 base.py 中如下部分(35/36行)

vim base.py

```

修改以下内容:

```python

# if version < (1, 3, 3):

# raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % # Database.__version__)

```

#找到`operations.py`文件(46行,版本不同行数不同哈~自个儿find一下),将`decode`改为`encode`, 然后 `vim operations.py`

```python

# 原始

if query is not None:

query = query.decode(errors='replace')

return query

#改为

if query is not None:

query = query.encode(errors='replace')

return query

```

一键复制

编辑

Web IDE

原始数据

按行查看

历史

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值