Django 数据库迁移命令

基础迁移命令大全

命令 作用 示例 说明
python manage.py makemigrations 自动检测模型变更并生成迁移文件 - 会扫描所有已注册的 app
python manage.py makemigrations app_name 只为指定 app 生成迁移文件 makemigrations system ✅ 推荐用于模块化项目
python manage.py migrate 执行所有迁移文件,更新数据库结构 - 会同步所有 app 的迁移
python manage.py migrate app_name 只迁移某个 app 的变更 migrate users 常用于局部调试或回滚
python manage.py migrate app_name migration_name 迁移到某个版本 migrate users 0003 可用于回滚或版本锁定
python manage.py showmigrations 查看所有迁移状态 - ✅ 已应用的前面有 X,未应用为空
python manage.py sqlmigrate app_name migration_name 查看某个迁移的 SQL 语句 sqlmigrate users 0002 不执行,只展示 SQL

高级迁移技巧

创建空迁移(用于手动写逻辑)

复制代码
python manage.py makemigrations --empty app_name

适合写 RunSQLRunPython、数据迁移等。

回滚迁移(慎用)

复制代码
python manage.py migrate app_name zero

会删除该 app 所有迁移记录和表结构。

指定数据库(多数据库场景)

复制代码
python manage.py migrate --database=your_db_alias

适用于 DATABASES 中配置了多个数据库。

清理并重建数据库(开发阶段)

复制代码
# 删除 SQLite 数据库
rm db.sqlite3

# 删除所有迁移文件(保留 __init__.py)
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete

# 重新生成迁移
python manage.py makemigrations
python manage.py migrate

常见问题与解决方案

问题 原因 解决方案
修改模型但迁移文件没变化 没有实际字段变更 检查字段定义是否真的变化
migrate 报错字段已存在 数据库已有字段 手动编辑迁移文件或使用 RunSQL
多人协作迁移冲突 同时修改模型 合并迁移文件或统一命名规范
删除字段后 migrate 报错 有依赖或外键约束 拆分迁移步骤,先解除约束再删除字段

企业级推荐实践

  • 每个 app 单独执行 makemigrations app_name,保持迁移清晰

  • 每次迁移前执行 sqlmigrate 检查 SQL 语句

  • 所有迁移文件都应提交到 Git,避免协作冲突

  • 生产环境迁移前务必备份数据库

  • 对于复杂变更,建议拆分为多个迁移文件逐步执行

相关推荐
青 春 记 忆1 分钟前
零基础入门python04:用注册校验理解字典、集合和条件判断
开发语言·vscode·python·python3.11
kels88995 分钟前
实战排坑:黄金实时API开发,XAUUSD Tick报文异常处理实践
开发语言·python·websocket·网络协议·信息可视化
今天AI了吗8 分钟前
MCP 协议打通 AI 与国产数据库,SQL 调优全流程一站式闭环
数据库·人工智能·sql
FBI HackerHarry浩12 分钟前
Pandas 库中用于分类变量独热编码(One-Hot Encoding)的函数 pd.get_dummies() 函数
开发语言·人工智能·python·pandas
高洁0119 分钟前
工信部教考中心证书-人工智能系列本系列
人工智能·python·深度学习·算法
灯澜忆梦22 分钟前
【MySQL11】进阶篇 | 索引_#3使用规则
数据库·sql·mysql·性能优化
名字还没想好☜27 分钟前
Go 的 sync.Cond 实战:用条件变量做等待/通知,比忙轮询省 CPU
开发语言·数据库·后端·golang·go
李可以量化37 分钟前
Tornado 从入门到精通(二)下:协程调用方式与经典使用模式
python
雪碧透心凉_1 小时前
Python OpenCV图像处理入门
图像处理·python·opencv
李可以量化1 小时前
Tornado 从入门到精通(二)上:协程核心机制详解
python