我试图从gorm返回一个实例。打开()返回它我得到了以下错误
controllers/db.go:34: cannot assign *gorm.DB to dc.DB (type gorm.DB) in multiple assignment
这是db.go控制器
package controllers
import (
//"fmt"
_ "github.com/go-sql-driver/mysql"
//v "github.com/spf13/viper"
"github.com/jinzhu/gorm"
)
type DBController struct {
DB gorm.DB
}
func (dc *DBController) InitDB() {
var err error
dc.DB, err = gorm.Open("mysql","root:12345@tcp(localhost:3306)/api")
if err != nil {
log.Fatalf("Error when connect database, the error is '%v'", err)
}
dc.DB.LogMode(true)
}
func (dc *DBController) GetDB() gorm.DB {
return dc.DB
}
此错误的原因是什么?如何解决此问题?
答案 0 :(得分:0)
你需要并且很可能你想在控制器的结构中有一个指针。使用指向数据库对象(gorm.DB)的指针传递结构将阻止Go制作此对象的副本(gorm.DB)。
执行以下操作:
type DBController struct {
DB *gorm.DB
}
现在它应该可以正常工作。