当前位置: 首页 > news >正文

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

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

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

http://www.dtcms.com/a/428289.html

相关文章:

  • 手机做任务佣金的网站上海开艺设计集团有限公司
  • 卓辉科技 网站建设优秀定制网站建设方案
  • Centos系统替代选择
  • 做电影网站侵权吗公司网页制作设计
  • 如何安全清除硬盘数据防止恢复
  • 电影采集网站怎么做杭州一起做网站
  • 钓鱼网站怎么制作htmlvps做网站 推广
  • Work NVMe协议
  • python5
  • 【Rust GUI开发入门】编写一个本地音乐播放器(13. 实现按键绑定)
  • 旗舰店的网站怎么做上市公司网站的作用
  • Java坐标转换的多元实现路径:在线调用、百度与高德地图API集成及纯Java代码实现
  • 网站搜索功能怎么实现如何建议一个网站
  • [工作流节点4] 分支节点与条件判断 —— 明道云工作流核心逻辑拆分技巧
  • numpy -- 字符串函数 capitalize() 和 title() 简介
  • Aupload + vuedraggable实现 上传的文件可以拖拽排序
  • 邯郸做网站的公司哪家好国家备案网
  • 人工智能与小程序开发:双翼齐飞,重塑数字体验新范式
  • eNSP、HCIA学习笔记
  • 网上书城 网站建设方案高端网站服务范围
  • Geant4实例
  • 网站建设一条龙全包seowordpress动态计时
  • 【Battery】慢速和快速充电的显示逻辑
  • 一个startActivity请求是如何穿越进程边界
  • 怎么看一个网站是用什么程序做的衡水建设网站
  • 网站建设配图微商城网站建设信息
  • 富文本【表格】
  • 【Java数据结构】——堆(找出用于解决最大/最小的n个元素,或者求中位数)
  • Python快速入门专业版(五十一):Python异常处理进阶:try-except-finally与raise语句(资源释放与主动抛异常)
  • 买家秀接口深度开发:从内容解析到情感分析的全链路实现