修复smoke.sql可重入并补迁移回滚验证

This commit is contained in:
hello-dd-code
2026-02-28 16:32:50 +08:00
parent 48f6e9dcad
commit c7974e7f40
2 changed files with 43 additions and 1 deletions
@@ -0,0 +1,42 @@
# smoke.sql DDL 与迁移顺序验证(2026-02-28
对应 issue`#9 [P0][T6] 校验 docs/sql/smoke.sql DDL 与迁移顺序`
## 变更
-`fa_smoke_log` 的建表语句改为 `CREATE TABLE IF NOT EXISTS`,保证脚本可重复执行(增量场景不报错)。
## 验证环境
- MySQL: `mysql:8.0`Docker 临时容器)
- 数据库名:`wx_service`
- SQL 文件:`docs/sql/smoke.sql`
## 验证步骤与结果
1. 空库初始化
- 执行:首次导入 `smoke.sql`
- 结果:成功,目标 5 张表全部创建(计数=5)
2. 增量迁移
- 执行:在同一库重复导入 `smoke.sql`
- 结果:成功,无建表冲突(计数=5
3. 回滚可行性
- 执行:按逆依赖顺序 `DROP TABLE` 后再次导入 `smoke.sql`
- 结果:成功,可回滚后重建(计数=5)
## 验证命令
```bash
# 1) 空库初始化
mysql -h127.0.0.1 -uroot wx_service < /sql/smoke.sql
# 2) 增量重放
mysql -h127.0.0.1 -uroot wx_service < /sql/smoke.sql
# 3) 回滚后重建
mysql -h127.0.0.1 -uroot wx_service -e \
"DROP TABLE IF EXISTS fa_smoke_ai_next_smoke, fa_smoke_user_profile, fa_smoke_ai_advice_unlocks, fa_smoke_ai_advice, fa_smoke_log;"
mysql -h127.0.0.1 -uroot wx_service < /sql/smoke.sql
```
+1 -1
View File
@@ -1,7 +1,7 @@
-- 戒烟/抽烟记录主表
-- 注意:该表字段来自旧系统(createtime/updatetime/deletetime 为秒级时间戳)
CREATE TABLE `fa_smoke_log` (
CREATE TABLE IF NOT EXISTS `fa_smoke_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL COMMENT '用户ID',
`smoke_time` date DEFAULT NULL COMMENT '抽烟时间',