Django 迁移中会删除数据的危险命令

Django 迁移中会删除数据的危险命令及操作

在 Django 迁移系统中,以下命令和操作会直接或间接删除数据库表数据,属于高风险操作,在生产环境中必须谨慎使用:

1. 会删除数据的迁移命令

直接删除数据的命令

  • migrate zero (回滚所有迁移)

    bash 复制代码
    python manage.py migrate app_name zero

    → 会删除指定应用的所有表及其数据(按迁移反向操作)

  • flush (清空数据库)

    bash 复制代码
    python manage.py flush

    → 删除所有表中的所有数据(保留表结构)

危险组合命令

  • reset_db (Django-extensions 提供)

    bash 复制代码
    python manage.py reset_db

    → 完全重置数据库(删除所有表和数据)

安全操作建议

  1. 必须执行的预防措施:

    bash 复制代码
    # 执行前先备份数据库
    python manage.py dumpdata > backup.json
    # 或使用数据库原生工具
    pg_dump mydb > backup.sql
  2. 替代方案:

    • 使用软删除(添加 is_deleted 字段)而非物理删除
    • 先归档数据再执行删除操作
    • 使用 db_table 重命名而非删除表
  3. 检查迁移影响:

    bash 复制代码
    # 查看将执行的SQL(不实际执行)
    python manage.py sqlmigrate app_name migration_number
    
    # 查看迁移计划
    python manage.py migrate --plan
  4. 生产环境操作流程:

    1. 在测试环境验证迁移
    2. 备份生产数据库
    3. 在维护窗口期执行
    4. 准备回滚方案
    5. 监控执行过程

重要提醒:任何包含 DeleteModel、RemoveField 或 RunPython/RunSQL 中有删除操作的迁移文件,都应视为高风险迁移,必须经过严格审查才能在生产环境执行。

相关推荐
高级程序源4 小时前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·django·flask·课程设计
WeiXin_DZbishe4 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
KIDULT°4 小时前
MySQL系列 (1):数据库原理
运维·数据库·mysql·云计算
我不是程序员三三5 小时前
透明加密软件偶发解密异常排错实录:文件时能打开时乱码
数据库·域智盾
snhna5 小时前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
天行健,君子而铎5 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
网络·数据库·安全
牛战士coding5 小时前
MySQL 读写分离完整链路:主从复制、多数据源与 @DS 路由
数据库·mysql
Wx-bishekaifayuan6 小时前
springboot汉中旅游服务平台41442-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
goehou6 小时前
MCP 查数实战:让 LLM 安全地查数据库(只读账号、SQL 校验、参数漂移)
数据库·ai·llm·教程·mcp·function calling
我不会插花弄玉7 小时前
7.函数【由浅入深-MySQL】
android·数据库·mysql