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

Django 4.1执行migrations后PostgreSQL字段未同步问题求助

解决Django初始迁移未生效的问题

问题定位

核心问题在于Django的django_migrations表已标记初始迁移(0001_initial)为已执行,但数据库并未实际创建对应表和字段,导致后续新增字段的迁移能正常生效,原有字段却始终不出现。

实操解决方案

  1. 核查迁移状态
    打开pgAdmin,执行SQL查询迁移记录:

    SELECT * FROM django_migrations WHERE app='你的应用名称';
    

    如果能查到0001_initial的记录,说明Django误判该迁移已执行,这就是问题根源。

  2. 重置迁移与数据库状态

    • 先备份数据库(避免数据丢失)
    • 删除应用下migrations文件夹内,除__init__.py外的所有迁移文件
    • 在pgAdmin中执行SQL清除该应用的迁移记录:
      DELETE FROM django_migrations WHERE app='你的应用名称';
      
    • 若数据库中已存在带created_time字段的目标表,直接删除该表(数据不重要时,新手推荐此操作)
  3. 重新生成并执行迁移

    • 运行命令生成新的初始迁移:
      python manage.py makemigrations
      
    • 执行迁移同步数据库:
      python manage.py migrate
      

    此时控制台会输出创建表和所有字段的日志,包括你定义的UUID类型id字段。

额外注意事项

  • 确保模型中重写id字段的代码正确:
    import uuid
    from django.db import models
    
    class YourModel(models.Model):
        id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
        # 其他原有字段
        created_time = models.DateTimeField(auto_now_add=True)
    
  • 执行migrate时留意控制台报错,若出现UUID相关错误,确认已在模型文件中导入uuid模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:47:11