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

测试Django与MySQL 8.0时出现datetime不兼容问题求助

解决Django 2.0.4 + MySQL 8.0.11登录时的AttributeError问题

我之前也碰到过一模一样的兼容性问题,当时折腾了好一会儿才搞定,给你分享下解决方案:

问题原因

Django 2.0.4发布于2018年4月,而MySQL 8.0.11是同期刚推出的版本,Django的早期2.0.x版本对MySQL 8.0的datetime类型处理存在bug——在后台登录的认证逻辑中,代码错误地试图对datetime.datetime对象调用字符串的split()方法,导致抛出'datetime.datetime' object has no attribute 'split'这个错误。

解决方案

1. 优先升级Django版本(最推荐)

Django在后续的2.0.x补丁版本(比如2.0.10及以上)以及更高的2.x稳定版中已经修复了这个MySQL 8.0的兼容性问题。你可以执行以下命令升级到同系列的最新补丁版:

pip install --upgrade django==2.0.10

如果项目允许,更建议直接升级到Django 2.2 LTS版本,它对MySQL 8.0的支持更完善,也有更长的维护周期。

2. 调整时区配置(临时 workaround)

如果暂时无法升级Django,可以通过统一时区来规避这个问题:

  • 在MySQL的配置文件(比如my.cnf或my.ini)中添加或修改:
    default-time-zone = '+00:00'
    
    保存后重启MySQL服务。
  • 在Django项目的settings.py中确保时区设置为UTC:
    TIME_ZONE = 'UTC'
    USE_TZ = True
    

3. 确认使用正确的数据库驱动

旧的MySQL-python驱动不支持MySQL 8.0,必须使用mysqlclient。如果你的项目还在使用旧驱动,执行以下命令安装正确的驱动:

pip install mysqlclient

验证

完成上述操作后,重启Django开发服务器,再次访问http://localhost:8000/admin/login/?next=/admin/提交POST请求,应该就能正常登录后台了。

内容的提问来源于stack exchange,提问作者marcelo.delta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:30:29