Django Models创建表执行Migrate时报sqlite3 near ")"语法错误如何解决
问题根因
你的报错核心是模型代码和迁移文件逻辑冲突,迁移链路混乱:
- 你当前
models.py中仅保留了Proyecto模型,但自动生成的0008迁移文件中,包含删除Proyecto、Evaluador、Financiamiento三个模型、新增不存在的fight模型的操作,逻辑完全不匹配。 - 执行迁移时Django生成的删表/删字段SQL不符合SQLite语法约束,最终抛出
)附近语法错误。
解决步骤
方案1:无重要数据可重置库(最快)
- 进入
RegistrarProyecto应用的migrations目录,删除除__init__.py外的所有迁移文件 - 删除项目根目录下的
db.sqlite3数据库文件 - 重新执行迁移命令:
python manage.py makemigrations python manage.py migrate
方案2:有重要数据不可删库
- 先删除
0008_auto_20210621_1223.py及后续生成的所有迁移文件 - 将
models.py内容恢复到0007迁移执行完成后的对应状态 - 再按需调整
models.py的字段/模型,重新执行makemigrations和migrate即可
注意:后续不要频繁对同名模型执行删除后又重新创建的操作,很容易导致迁移链路逻辑冲突。
内容的提问来源于stack exchange,提问作者Thrillidas
相关产品推荐
相关产品推荐

