Django数据库列迁移失败求助:添加布尔字段后migrate报错
Django迁移报错:django.db.utils.OperationalError: no such column: ""is_admin"" 的解决办法
检查迁移文件有效性
找到你的app下migrations目录里最新生成的迁移文件,打开查看operations列表,确认是否包含针对is_admin字段的AddField操作。如果没有,直接删除该无效迁移文件,重新执行makemigrations <my app>生成正确的迁移文件。核对数据库迁移记录
登录数据库查看django_migrations表,找到对应app的迁移条目。如果存在迁移记录显示已执行,但实际数据库中并没有is_admin字段的情况,可以删除这条错误记录后,重新执行migrate操作。操作前务必备份数据,避免数据丢失。检查模型字段定义
确认user.py里的is_admin字段写法正确,示例:is_admin = models.BooleanField(default=False)注意字段名不要带多余引号,模型类需正确继承
models.Model,避免拼写错误。重置迁移(仅适用于开发环境)
若处于开发阶段且数据可重置,直接删除app的migrations目录下除__init__.py之外的所有文件,再依次执行:python manage.py makemigrations <my app> python manage.py migrate此方法可彻底清除迁移历史的混乱,但绝对不能在生产环境使用。
排查依赖代码干扰
如果项目中有其他模型、信号或启动时执行的代码提前访问了is_admin字段,会导致迁移时字段尚未创建就被调用。可暂时注释掉这些依赖代码,完成迁移后再恢复。
内容的提问来源于stack exchange,提问作者Sebastian Presno Alvarado
相关产品推荐
相关产品推荐

