You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级GORM至v1.25.12后dbresolver插件v1.5.2运行失败

GORM v1.25.12与dbresolver v1.5.2兼容性构建失败问题

问题现象

升级GORM至v1.25.12后,使用dbresolver v1.5.2插件启动服务时出现构建失败,降级GORM到v1.25.11后服务可正常运行。

代码片段

gormDb, err = gorm.Open(mysql.Open(fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", viper.GetString("mysql.username"), viper.GetString("mysql.password"), viper.GetString("mysql.host.write"), viper.GetInt("mysql.port"), viper.GetString("mysql.database"))), &gorm.Config{
        SkipDefaultTransaction: true,
        PrepareStmt:            true,
    })
    if err != nil {
        return err
    }
    gormSourceDb, err := gormDb.DB()
    if err != nil {
        return err
    }
    gormSourceDb.SetMaxIdleConns(viper.GetInt("mysql.max_idle_conns"))
    gormSourceDb.SetMaxOpenConns(viper.GetInt("mysql.max_open_conns"))
    return gormDb.Use(dbresolver.Register(dbresolver.Config{
        Replicas: []gorm.Dialector{mysql.Open(fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", viper.GetString("mysql.username"), viper.GetString("mysql.password"), viper.GetString("mysql.host.read"), viper.GetInt("mysql.port"), viper.GetString("mysql.database")))},
    }))

构建错误信息

Build Error: go build -o d:\project\ecosservice\cmd\__debug_bin2894905842.exe -gcflags all=-N -l .\run_server.go
# gorm.io/plugin/dbresolver
C:\Users\83667\go\pkg\mod\gorm.io\plugin\dbresolver@v1.5.2\dbresolver.go:147:5: unknown field PreparedSQL in struct literal of type gorm.PreparedStmtDB (exit status 1)

临时解决办法

将GORM版本回退到v1.25.11,执行命令:

go get gorm.io/gorm@v1.25.11

问题说明

dbresolver v1.5.2的代码中引用了GORM内部结构体gorm.PreparedStmtDB的PreparedSQL字段,但该字段在GORM v1.25.12中被移除或修改,导致兼容性冲突。

建议等待GORM官方发布修复版本,或关注dbresolver插件是否推出适配GORM v1.25.12的更新版本。

内容的提问来源于stack exchange,提问作者SuperGodK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 17:20:54