修复smoke.sql可重入并补迁移回滚验证
This commit is contained in:
@@ -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
@@ -1,7 +1,7 @@
|
|||||||
-- 戒烟/抽烟记录主表
|
-- 戒烟/抽烟记录主表
|
||||||
-- 注意:该表字段来自旧系统(createtime/updatetime/deletetime 为秒级时间戳)
|
-- 注意:该表字段来自旧系统(createtime/updatetime/deletetime 为秒级时间戳)
|
||||||
|
|
||||||
CREATE TABLE `fa_smoke_log` (
|
CREATE TABLE IF NOT EXISTS `fa_smoke_log` (
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`uid` int(11) NOT NULL COMMENT '用户ID',
|
`uid` int(11) NOT NULL COMMENT '用户ID',
|
||||||
`smoke_time` date DEFAULT NULL COMMENT '抽烟时间',
|
`smoke_time` date DEFAULT NULL COMMENT '抽烟时间',
|
||||||
|
|||||||
Reference in New Issue
Block a user