From c7974e7f4023b4ef5b2fd37e15526d6f0f50b884 Mon Sep 17 00:00:00 2001 From: hello-dd-code Date: Sat, 28 Feb 2026 16:32:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dsmoke.sql=E5=8F=AF=E9=87=8D?= =?UTF-8?q?=E5=85=A5=E5=B9=B6=E8=A1=A5=E8=BF=81=E7=A7=BB=E5=9B=9E=E6=BB=9A?= =?UTF-8?q?=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smoke_ddl_validation_2026-02-28.md | 42 +++++++++++++++++++ docs/sql/smoke.sql | 2 +- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 docs/sql/reports/smoke_ddl_validation_2026-02-28.md diff --git a/docs/sql/reports/smoke_ddl_validation_2026-02-28.md b/docs/sql/reports/smoke_ddl_validation_2026-02-28.md new file mode 100644 index 0000000..1b0d819 --- /dev/null +++ b/docs/sql/reports/smoke_ddl_validation_2026-02-28.md @@ -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 +``` diff --git a/docs/sql/smoke.sql b/docs/sql/smoke.sql index 015818a..50e7f9d 100644 --- a/docs/sql/smoke.sql +++ b/docs/sql/smoke.sql @@ -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 '抽烟时间',