3.2 KiB
3.2 KiB
v0.14.1-preview GORM 可选适配验收
日期:2026-09-24。GORM v2 API,固定 gorm.io/gorm v1.31.2、gorm.io/driver/mysql v1.6.0。没有修改接入项目业务,也未使用业务数据库。
已通过的检查
- 原池身份与限额保持;初始化错误、已取消 context、版本查询超时都保留原因,且不会关闭借用池。
- 原生命名策略、默认事务保护、错误翻译、PreparedStmt 查询和嵌套事务保持可用。成功后启动 context 取消不会影响新请求。
- SQL 日志级别、慢查询、ErrRecordNotFound 忽略、占位符过滤、错误详情显式开关、requestId/traceId、并发 LogMode 副本与 UTF-8 截断。
- 真实 MySQL 8.4:TLS、同池连接、事务提交/错误回滚/panic 回滚、嵌套 savepoint 回滚、唯一约束、查询取消和后续恢复;参数与重复键错误中的值不进入默认日志。
- 实际生成 MySQL 项目,只扩展项目拥有的 svc 字段与 Init,main/运行期不改;生成检查通过,ORM 随项目池关闭。既有 MySQL TLS/mTLS 与 HTTP 限额回归一并执行。
go list -deps确认核心 App、database、database/mysql 的编译依赖不包含 GORM。
本地命令:
GO_OMNI_SCAFFOLD_INTEGRATION=1 go test -race ./... -count=1 -timeout=300s
go vet ./...
go build ./...
python3 scripts/verifyConnector.py --local --gorm --report reports/gormLocal.json
本地数据库报告 的 MySQL 限制为 1 CPU、768 MiB、128 PIDs,只绑定 localhost;测试使用临时凭据/证书,结束后清理容器和消费者。实库用例通过脚本显式启用,不能把普通 go test 下的 skip 当作实库通过。
发布后的远程验收也已通过:
- 远程 MySQL/GORM 报告:25.42 秒,实际下载固定版本,执行 TLS、事务、取消、日志、生成项目接入及已有数据库/HTTP 回归。
- 远程生成项目报告:30.45 秒,验证根目录运行/构建、重新生成、错误目录与参数、上传下载、内置端点及初始化失败/监听失败/正常退出清理。
- 两份报告均使用空 module 缓存,无本地 replace,CLI 和消费者版本均为
v0.14.1-preview;module 校验值一致为h1:qJ5EPUfSKe8KOHK8aU5f78Fg24HXCgbDfe2z1XXTmf4=。同版 CLI 的生成检查没有错误版本提示。
复验命令:
python3 scripts/verifyConnector.py --version v0.14.1-preview --gorm --report reports/gormRemote.json
python3 scripts/verifyManagedRelease.py --version v0.14.1-preview --report reports/gormManagedRemote.json
代码标签固定在 b8ab6b35219d53d6de392c920fe7ecbe9a76dade。远程验收结果单独提交,标签保持不变;临时容器、证书、消费者与进程均已清理。
边界
本版真实数据库只验收 MySQL。自定义方言工厂必须使用给定连接池;额外连接池由其所有者管理,不自动纳入当前池生命周期。GORM 默认不启用 PrepareStmt;显式启用时保留第三方缓存语义,其清理接口及后台 goroutine 的限制已在 适配文档 说明。默认 SQL 参数隐藏不等于自动脱敏原始 SQL 字面量。