Django单元测试运行耗时久,执行--keepdb参数出现MySQL 1064语法错误
问题原因
这个报错是版本兼容性冲突导致的:Django 2.1.7 与 PyMySQL 1.0.2 的SQL拼接逻辑、转义规则不匹配,生成的测试库创建SQL语句不符合MySQL语法要求。
解决方案
方案1:降级PyMySQL到兼容版本
Django 2.1.7 适配的PyMySQL最高稳定版本为0.9.3,执行以下命令替换版本即可:
pip uninstall pymysql pip install pymysql==0.9.3
降级完成后重新执行python manage.py test --keepdb即可正常运行。
方案2:手动指定测试数据库跳过创建逻辑
如果不想调整依赖版本,可以预先创建测试库,再修改Django配置跳过自动建库步骤:
- 手动登录MySQL执行建库语句:
CREATE DATABASE IF NOT EXISTS `test_b2b`;
- 在
settings.py的数据库配置中添加TEST参数,关闭自动建库:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 原有其他配置项保持不变 'TEST': { 'NAME': 'test_b2b', 'CREATE_DB': False, } } }
配置完成后再次执行测试命令即可。
内容的提问来源于stack exchange,提问作者surya raj
相关产品推荐
相关产品推荐

