Django 4.1执行migrations后PostgreSQL字段未同步问题求助
解决Django初始迁移未生效的问题
问题定位
核心问题在于Django的django_migrations表已标记初始迁移(0001_initial)为已执行,但数据库并未实际创建对应表和字段,导致后续新增字段的迁移能正常生效,原有字段却始终不出现。
实操解决方案
核查迁移状态
打开pgAdmin,执行SQL查询迁移记录:SELECT * FROM django_migrations WHERE app='你的应用名称';如果能查到
0001_initial的记录,说明Django误判该迁移已执行,这就是问题根源。重置迁移与数据库状态
- 先备份数据库(避免数据丢失)
- 删除应用下
migrations文件夹内,除__init__.py外的所有迁移文件 - 在pgAdmin中执行SQL清除该应用的迁移记录:
DELETE FROM django_migrations WHERE app='你的应用名称'; - 若数据库中已存在带
created_time字段的目标表,直接删除该表(数据不重要时,新手推荐此操作)
重新生成并执行迁移
- 运行命令生成新的初始迁移:
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
相关产品推荐
相关产品推荐

