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

Django模型测试报错:test_conect.projects表不存在

Django测试时自定义模型表不存在的问题

执行python manage.py test时触发错误:

django.db.utils.ProgrammingError: (1146, "Table 'test_conect.projects' doesn't exist")

已执行makemigrations和migrate命令,但测试数据库仅包含Django自动创建的系统表(如auth_group等),自定义表未生成。

相关信息:

  • 自定义Files模型代码
  • 测试代码
  • 数据库配置

试过多种网上方案无效,寻求解决方案。

注:编写测试是为了尝试GitHub Actions集成,暂犹豫是否使用Docker部署MySQL与Django。


实用解决方案

1. 确认应用已注册到INSTALLED_APPS

检查settings.py里的INSTALLED_APPS列表,必须包含你的自定义应用(比如projects)——Django只会给已注册的应用生成迁移、创建测试表。

2. 强制重建测试数据库

测试命令默认会重用现有测试数据库,残留问题可能导致迁移不生效,试试强制重建:

# 直接重建测试库并执行测试
python manage.py test --noinput
# 或者保留测试库但强制重新应用迁移
python manage.py test --keepdb --noinput

3. 检查迁移文件是否正常生成

确认你的应用目录下有migrations文件夹,且里面有除__init__.py外的迁移文件。如果没有,重新生成并应用迁移:

# 替换your_app_name为你的实际应用名
python manage.py makemigrations your_app_name
python manage.py migrate your_app_name

4. 核对测试数据库配置

查看settings.py的DATABASES配置,确保测试库的设置正确:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'conect',
        'USER': '你的数据库用户名',
        'PASSWORD': '你的数据库密码',
        'HOST': 'localhost',
        'PORT': '3306',
        'TEST': {
            'NAME': 'test_conect',  # 要和错误提示的库名一致
        },
    }
}

同时确保数据库用户有创建test_conect库的权限。

5. 手动为测试库应用迁移

直接指定测试数据库执行迁移:

python manage.py migrate --database=default

如果测试库还没创建,先登录MySQL手动创建test_conect库,再执行上面的命令。

6. 排查模型代码问题

检查你的Files模型有没有语法错误、字段类型错误或关联关系错误——这些问题会导致迁移无法正常应用到测试数据库。


关于GitHub Actions与Docker的建议

如果是为了GitHub Actions集成,建议直接用Docker部署MySQL和Django。这种方式能保证测试环境与生产环境一致,避免本地和CI环境的配置差异。在GitHub Actions中可以通过docker-compose启动服务,再运行测试命令,迁移和测试环境完全隔离可控。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:39:58