django migration 高级用法
type
status
date
slug
summary
tags
category
icon
password
最近对于 django 的 migration 迁移因为有不一般的需求,于是搜集了一下不常见的使用场景。
情景一
项目丢失 django migration历史记录,django 的 models 与数据库表结构不一致。
这种情况下,数据库的django migration表只能提供有限参考,如果从django migration表的最后一条记录开始手动重建migrate,需要挨个比较每个model与数据库表的差异,然后在空白migrate文件里写入对应的操作,最后执行
python
manage.py
migrate someapp 000X
,一般来说成功更新就说明续上了,后续开发直接走make migation → migrate的流程就行了情景二
项目缺少 migration 文件,但是 models 与当前数据库一致。
这种情况需要从头开始重建migration文件,一般来说,可以考虑只生成两个文件,0001和0002,0001对应model现状,即一系列表的创建命令,0002作为当前你要增加的修改。对于每个app,首先对0001 执行
python
manage.py
migrate someapp 0001 —fake
, 这代表更新model到0001的状态但是不实际执行,运行完这个命令后,你的数据库和model应该是一致的,相当于把历史的各个migrate记录压缩到了0001migration里