django 配置mysql_Django配置mysql

在使用conda环境和Django配置MySQL时遇到了错误,包括`mysqlclient`版本不兼容和`AttributeError`问题。通过注释`base.py`中特定代码块,以及修改`operations.py`中`query.decode`为`query.encode`,成功解决了执行`makemigrations`和`sqlmigrate`时的报错。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在安装 conda 后,pip3 报不是内部命令等错误的解决方式

执行 :

python -m ensurepip

init.py 添加

import pymysql

pymysql.install_as_MySQLdb()

执行 python manage.py makemigrations 报错如下:

...

return _bootstrap._gcd_import(name[level:], package, level)

File "G:\ProgramData\Anaconda3\lib\site-packages\django\db\backends\mysql\base.py", l

ine 36, in

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; y

ou have 0.9.3.

mysqlclient 版本不适合,可以更新版本或者如下操作,G:\ProgramData\Anaconda3\lib\site-packages\django\db\backends\mysql\base.py文件注释以下内容

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

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

注释后,接着又报如下错误

...

File "G:\ProgramData\Anaconda3\lib\site-packages\django\db\backends\mysql\base.py", line 231, in init_connection_state

if self.features.is_sql_auto_is_null_enabled:

File "G:\ProgramData\Anaconda3\lib\site-packages\django\utils\functional.py", line 80, in __get__

res = instance.__dict__[self.name] = self.func(instance)

File "G:\ProgramData\Anaconda3\lib\site-packages\django\db\backends\mysql\features.py", line 82, in is_sql_auto_is_null_enabled

cursor.execute('SELECT @@SQL_AUTO_IS_NULL')

File "G:\ProgramData\Anaconda3\lib\site-packages\django\db\backends\utils.py", line 103, in execute

sql = self.db.ops.last_executed_query(self.cursor, sql, params)

File "G:\ProgramData\Anaconda3\lib\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'

将报错文件 G:\ProgramData\Anaconda3\lib\site-packages\django\db\backends\mysql\operations.py中的

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

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

最后再执行

python manage.py makemigrations

python manage.py sqlmigrate

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值