Browse Source

docs(task4): add sqlite rollback runbook for comment email migration

Document an actionable Task4 rollback plan for SQLite, including temp-table replacement steps, index/constraint rebuild, and maintenance-window backup prerequisites to remove quality gate blockers.

Made-with: Cursor
main
npmrun 3 weeks ago
parent
commit
aa1e44ebc1
  1. 26
      docs/superpowers/specs/2026-04-20-comment-email-config-design.md

26
docs/superpowers/specs/2026-04-20-comment-email-config-design.md

@ -224,3 +224,29 @@
4. 接入通知发送服务与日志。
5. 增加管理员测试发件接口与按钮。
6. 完成测试与联调验收。
## 10. 数据库迁移回滚预案(Task4)
### 10.1 限制说明(SQLite)
- SQLite 不支持通用 `DROP COLUMN` 语法,无法直接删除 `post_comments.guest_email``post_comments.guest_is_anonymous`
- 因此 Task4 回滚不能依赖“反向删列”语句,必须采用“建新表 + 搬迁 + 替换”的结构化回滚方案。
### 10.2 回滚执行前置条件
- 仅在维护窗口执行,暂停写入评论相关流量,避免迁移过程中出现并发写导致数据不一致。
- 执行前完成数据库备份(至少一份可恢复快照),并验证备份可用性后再开始回滚。
### 10.3 回滚步骤(可执行)
1. 创建临时表(例如 `post_comments_rollback`),字段集合与回滚前结构一致,**不包含** `guest_email`、`guest_is_anonymous`。
2. 将原 `post_comments` 的保留字段按列名显式写入临时表(禁止 `SELECT *`,避免列位错配)。
3. 删除或重命名原 `post_comments` 表。
4. 将临时表重命名为 `post_comments`,完成结构替换。
5. 按回滚前定义重建 `post_comments` 相关索引、唯一约束与外键约束(如有)。
6. 执行完整性校验(记录条数、关键查询、外键检查)并恢复流量。
### 10.4 风险与注意事项
- 回滚方案仅调整表结构,不应修改业务逻辑代码与已发布 migration 文件。
- 若任一步骤异常,立即停止后续操作,使用回滚前备份恢复并重新评估。

Loading…
Cancel
Save