import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" "server/config" "gorm.io/plugin/dbresolver") func DB(config *config.Config) { var err error config.DB, err = gorm.Open("mysql", config.DBDSN) if err != nil { panic(err) } if !config.IsDev { config.DB.Use(dbresolver.Register(dbresolver.Config{ Replicas: []gorm.Dialector{mysql.Open("mysql", config.DBDSN2)}, })) }}我正在尝试使用 GORM 的 DBresolver 来利用我的云 SQL 实例的只读副本。我认为我使用的GORM包和DBresolver插件存在一些版本控制问题。当我运行上面的代码时,我得到以下错误:配置。断续器使用未定义(键入 *“github.com/jinzhu/gorm”。DB没有字段或方法使用)未定义:“github.com/jinzhu/gorm”。方言我无法在网上找到任何理由,关于GORM高级功能的在线资源也很少。如果我创建与副本的单独连接,我可以轻松使副本正常工作,但这样,每次与数据库交互时,我都需要指定 DB。我使用以下代码来实现上面的代码:https://gorm.io/docs/dbresolver.html
1 回答
开满天机
TA贡献1786条经验 获得超13个赞
您正在对 gorm 使用 v1 导入路径,但 DBResolver 是 V2 功能。您将需要改用:
"gorm.io/gorm"
用于主导入包"gorm.io/driver/mysql"
用于驱动程序导入gorm.Open
with 用于创建连接。mysql.Open
V2 主要是向后兼容的,但您需要确保测试任何旧代码才能在新版本上运行。
import (
"gorm.io/gorm"
"gorm.io/driver/mysql"
"gorm.io/plugin/dbresolver"
"server/config"
)
func DB(config *config.Config) {
var err error
config.DB, err := gorm.Open(mysql.Open(config.DBDSN), &gorm.Config{})
if err != nil {
panic(err)
}
if !config.IsDev {
config.DB.Use(dbresolver.Register(dbresolver.Config{
Replicas: []gorm.Dialector{mysql.Open("mysql", config.DBDSN2)},
}))
}
}
- 1 回答
- 0 关注
- 215 浏览
添加回答
举报
0/150
提交
取消