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,避免协作冲突

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

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

相关推荐
ServBay2 小时前
9 个 Python 第三方库推荐,不用 AI 都好像多出一个团队
后端·python
用户8356290780512 小时前
如何使用 Python 添加和管理 Excel 批注(完整示例)
后端·python
用户8356290780513 小时前
使用 Python 管理 Excel 工作表:创建、复制、删除与重命名
后端·python
SelectDB3 小时前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc
这个DBA有点耶4 小时前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵7 小时前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql
Nturmoils7 小时前
WHERE 条件别凭习惯写,常用查询先跑一遍
数据库
荣码11 小时前
LangGraph多Agent协作:3个Agent干活比1个强,但我踩了4个坑
java·python
用户8356290780511 天前
Python 操作 PDF 附件:添加、查看与管理指南
后端·python
Databend1 天前
在 AWS 中国峰会逛了一天,我在 Databend 展台看到了 Agent 数据基础设施的新思路
数据库·人工智能·agent