django模型迁移问题

Django模型迁移时报错:
django.db.utils.ProgrammingError: (1146, “Table ‘workreport.reading_prem’ doesn’t exist”)

猜测:

  1. AUTH_USER_MODEL参数的设置以点.来分隔,表示应用名.模型类名。
    注意:Django建议我们对于AUTH_USER_MODEL参数的设置一定要在第一次数据库迁移之前就设置好,否则后续使用可能出现未知错误。
  2. 这可能表明Django首次迁移需要有用户模型,而我的用户模型是在AbstractUser基础上添了两个外键字段。这两个外键字段需要有建好的表(我是将这两个模型和用户模型同时进行迁移)。导致锁死。

解决方法:
先将两个外键字段注释,进行迁移。再放开注释迁移一次。
已解决

### Django 模型迁移失败的原因分析 当遇到 `django.db.utils.OperationalError` 或者其他类型的迁移问题时,通常是因为数据库状态与应用程序的状态不同步所引起的。具体来说: - 数据库连接配置可能存在问题[^1]。 - 迁移记录和实际的数据库结构之间可能存在差异[^2]。 ### 解决方案概述 对于上述提到的各种情况,可以采取不同的策略来解决问题: #### 清理并重置迁移历史 如果发现迁移过程中出现了异常或者想要回滚到某个特定的时间点,则可以通过清理旧有的迁移记录来进行修复。这涉及到手动操作数据库中的 `django_migrations` 表以及项目内的 `.pyc` 文件或缓存文件夹等内容。 #### 执行假迁移 有时为了绕过某些无法正常处理的情况(比如已经存在的表),可以选择使用 `--fake` 参数来做一次虚拟化的迁移动作,这样可以让系统认为该次变更已经被成功应用过了,从而允许后续的真实更改得以继续推进。 ```bash python manage.py migrate --fake app_name zero ``` #### 更新模型定义后再创建新的初始迁移脚本 在确认所有先前的问题都得到妥善解决之后,应该再次调整好最新的业务逻辑对应的 Python 类描述,并通过命令行工具重新构建起一套完整的增量变化序列[^3]。 ```bash rm -rf ./your_app/migrations/* python manage.py makemigrations your_app python manage.py migrate ``` 请注意,在执行这些指令之前务必备份重要资料以防万一! ### 额外提示 为了避免未来发生类似的困扰,建议定期备份整个项目的源码仓库连同关联的数据存储介质;另外就是遵循官方文档的最佳实践指南去维护代码质量,减少不必要的复杂度引入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值