gpt4 book ai didi

go - 如何在golang中使用gorm通过ssh连接数据库?

转载 作者:行者123 更新时间:2023-12-01 22:20:02 63 4
gpt4 key购买 nike

我正在尝试通过ssh连接到数据库,我正在使用database/sql包连接到数据库,但是我不了解如何将database/sql实现到gorm jinzhu/gorm。有人可以告诉我如何实施吗?还是仅使用gorm包就能进行连接?
我刚接触golang。
这就是代码的样子。
主要问题在于NewBrandsRepository方法,该方法不能使用*sql.DB类型作为*gorm.DB

// Connect to the SSH Server
sshcon, errSSH := ssh.Dial("tcp", fmt.Sprintf("%s:%d", sshHost, sshPort), sshConfig)
if errSSH != nil {

}

defer sshcon.Close()

// Now we register the ViaSSHDialer with the ssh connection as a parameter
mysql.RegisterDial("mysql+tcp", (&ViaSSHDialer{sshcon}).Dial)

// And now we can use our new driver with the regular mysql connection string tunneled through the SSH connection
db, errDB := sql.Open("mysql", fmt.Sprintf("%s:%s@mysql+tcp(%s)/%s", dbUser, dbPass, dbHost, dbName))

if errDB != nil {

fmt.Printf("Failed to connect to the db: %s\n", errDB.Error())

}

fmt.Printf("Successfully connected to the db\n")

test := NewBrandsRepository(db)
NewBrandsRepository方法是这个
type brandsRepositoryImpl struct {
db *gorm.DB
}

func NewBrandsRepository(db *gorm.DB) *brandsRepositoryImpl {
return &brandsRepositoryImpl{db}
}

最佳答案

继续执行相同的步骤,但不要使用sql.Open

dsn := fmt.Sprintf("%s:%s@mysql+tcp(%s)/%s", dbUser, dbPass, dbHost, dbName)
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})

关于go - 如何在golang中使用gorm通过ssh连接数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64057933/

63 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com