JianFeeeee
18970479f9
docs: 复核 pi 5f3eb02d 三陷阱 —— 风险可达(实测静默丢 37 行、(a)(b) 全绿),两条理由订正
① ★★★ 陷阱1/3 成立且可达(真表名实测):
重建若为 DDL 里 4 条无 BEGIN 语句(migrate 逐条 Exec ⇒ 各自 auto-commit),DROP 后崩
⇒ 次日启动建出空的新 PK 表、守卫见 PK 已新 ⇒ 跳过重建 ⇒ 实测 行=0/_new=3
⇒ 判据 (a) PK ✓ (b) 索引 ✓ **全绿**而镜像为 0(生产 = 37 行静默消失)⇒ (c) 必需
★ 我先用自造表名 aps 测,"次日启动"没跑真 DDL ⇒ 误报,换真表名后成立(模拟生产必须用真 DDL)
② ★★ 两条理由订正(结论对、机制错):
① "SQL BEGIN 不生效" ⇒ 实测 **BEGIN 生效**(BEGIN→DROP→ROLLBACK 表回来;崩溃后亦完好)
真因: SetMaxOpenConns(1)(db.go:91)⇒ 池里仅一条连接 ⇒ BEGIN 恰在同连接
⇒ 巧合非保证(PG 分支 20)⇒ 用 BeginTx 对,理由应写"正确性依赖 MaxOpenConns(1)"
② "实际文本无空格" ⇒ 实际 PRIMARY KEY (agent_name, platform_id) **有**空格
失配真因是**模式里 , 后少空格** ⇒ 用 pragma 对,理由应写"LIKE 依赖空白/换行/引号形态"
③ ✅ pi 自撤"第二次 Migrate 撞 PK"复核为真(4 语句版幂等,run1/2/3 rc=0)
④ ✅ 附带: main.go 两次 Migrate ⇒ 必须幂等;REFERENCES agent_platform_sessions = 0 ⇒ 无需管 FK
⑤ ④ 最终措辞 + 收 pi"顺序依赖可消掉"(同事务内重建索引)+ 判据加 (c)
边界: 只读 + 临时 Go 探针(已删、status 已验干净);未改产品代码
2026-09-26 02:55:25 +08:00
..
2026-09-19 14:01:21 +08:00
2026-09-26 02:55:25 +08:00
2026-09-26 02:55:04 +08:00
2026-09-25 07:47:13 +08:00
2026-09-19 12:47:32 +08:00
2026-09-14 16:11:00 +08:00
2026-09-15 11:17:23 +08:00
2026-09-24 10:10:32 +08:00
2026-09-15 11:21:00 +08:00
2026-09-13 06:16:59 +08:00
2026-09-08 19:16:35 +08:00
2026-09-08 19:16:35 +08:00
2026-09-14 23:50:35 +08:00
2026-09-21 07:04:04 +08:00