docs(plan): 记录迁移编号不能改名的坑,并说明应用过后的对齐做法
P1a 的迁移先叫 20261002_0038,本地 dev 库应用过之后为保持链条连续改名成 0037,dev 库的 alembic_version 还记着旧编号,再启动就报 Can't locate revision identified by '20261002_0038'。 结论写进附录 C.1:编号要在被任何库应用之前定下来;已经应用过又必须改名时, 除改文件外还要把每个应用过的库 UPDATE alembic_version 对齐(前提是迁移内容 未变)。
This commit is contained in:
@@ -1152,6 +1152,13 @@ OSS_PREFIX=collect
|
||||
|
||||
约定:每个迁移的 `down_revision` 指向前一个;**写成幂等的**(照 `20261001_0036` 的写法,先 `sa.inspect` 查存在再改);每加一个迁移,`tests/test_migrations.py` 的 `HEAD_REVISION` 要同步改。
|
||||
|
||||
> **⚠️ 迁移编号一旦被任何库应用过就不能再改名**。P1a 犯过一次:迁移先叫 `20261002_0038`,本地 dev 库跑过一次,随后为了链条连续改名成 `0037`,dev 库里的
|
||||
> `alembic_version` 还记着 `0038`,再启动就报
|
||||
> `CommandError: Can't locate revision identified by '20261002_0038'`。
|
||||
> 改名要在**还没被任何库应用**之前做;已经应用过又必须改名时,除了改文件,还要把每个应用过的库
|
||||
> 手动对齐:`UPDATE alembic_version SET version_num='<新编号>';`(前提是迁移内容没变,
|
||||
> 否则要按实际差异补脚本)。
|
||||
|
||||
### C.2 通用约定
|
||||
|
||||
- 测试文件按功能命名:`tests/test_<域>_<主题>.py`(现有 38 个文件、235 条);
|
||||
|
||||
Reference in New Issue
Block a user