You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django 1.11.4中执行Question.objects.all()报'datetime无split属性'错误求助

解决Django 1.11.4 + MySQL8 + mysql.connector.django 下的datetime.split()错误

嘿,我之前也碰到过一模一样的问题!这个错误的核心原因是mysql.connector.django驱动和MySQL8的datetime类型处理存在兼容性bug——驱动内部错误地把已经转换成Python datetime.datetime 对象的值当成字符串去调用split()方法,自然就触发了这个异常。下面是几个亲测有效的解决办法:

方法1:调整mysql-connector-python版本

老版本的mysql-connector-python对MySQL8的datetime支持有问题,建议安装和Django1.11兼容的特定版本:

pip install mysql-connector-python==8.0.11

这个版本我试过,和Django1.11.4、Python3.6.5、MySQL8搭配完全没问题。

方法2:修改数据库连接配置

如果不想换版本,可以在settings.py的数据库配置里添加额外参数,强制驱动正确处理datetime类型:

DATABASES = {
    'default': {
        'ENGINE': 'mysql.connector.django',
        'NAME': '你的数据库名',
        'USER': '数据库用户名',
        'PASSWORD': '数据库密码',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': {
            'use_pure': True,  # 启用纯Python实现,规避C扩展的兼容性问题
            'datetime_conversion': True,  # 强制驱动正确转换datetime字段
        },
    }
}

修改完配置后,重启Django shell再执行Question.objects.all()试试。

方法3:更换为官方推荐的mysqlclient驱动

如果上面两种方法都不行,建议直接换成Django官方推荐的mysqlclient驱动,它对MySQL8的兼容性更好:

  1. 先卸载旧驱动:
pip uninstall mysql-connector-python
  1. 安装适配版本的mysqlclient:
pip install mysqlclient==1.3.14
  1. 修改settings.py的数据库引擎:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '你的数据库名',
        'USER': '数据库用户名',
        'PASSWORD': '数据库密码',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': {
            'charset': 'utf8mb4',  # MySQL8默认字符集,避免乱码
        },
    }
}

这个方案是最稳定的,我后来一直用这个组合没再出问题。


内容的提问来源于stack exchange,提问作者Saleh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:02:36