package common import ( "context" "fmt" "github.com/gogf/gf/v2/frame/g" ) // EnsureColumn 幂等加列:PRAGMA 查列不存在则 ALTER TABLE ADD COLUMN。 // 失败只记警告,不阻断启动(列缺失时后续查询只会取到空值)。 func EnsureColumn(ctx context.Context, table, col, sqlType string) { cols, err := g.DB().GetAll(ctx, fmt.Sprintf("PRAGMA table_info(%s)", table)) if err != nil { g.Log().Warningf(ctx, "migrate: %s 表结构读取失败: %v", table, err) return } for _, c := range cols { if c["name"].String() == col { return } } if _, err := g.DB().Exec(ctx, fmt.Sprintf("ALTER TABLE %s ADD COLUMN %s %s", table, col, sqlType)); err != nil { g.Log().Warningf(ctx, "migrate: %s.%s 加列失败: %v", table, col, err) return } g.Log().Infof(ctx, "migrate: %s.%s 已添加", table, col) }