为了账号安全,请及时绑定邮箱和手机立即绑定

gorm 无效的内存地址或 nil 指针取消引用

gorm 无效的内存地址或 nil 指针取消引用

Go
胡子哥哥 2022-04-26 15:41:47
我是 golang 和 gorm 框架的新手。这是我使用 gorm 获取数据库的代码。db.gopackage dbimport (    "fmt"    "github.com/jinzhu/gorm"    _ "github.com/lib/pq"    "github.com/teamhide/hfive_go/users"    "log")const (    DbHost     = "localhost"    DbPort     = "5432"    DbUser     = "1"    DbPassword = "1"    DbName     = "1")var db *gorm.DBvar err errorfunc Init() {    db, err = gorm.Open(        "postgres",        fmt.Sprintf(            "host=%s port=%s user=%s dbname=%s password=%s sslmode=disable",            DbHost,            DbPort,            DbUser,            DbName,            DbPassword,        ),    )    if err != nil {        log.Fatal(err.Error())    }    db.AutoMigrate(&users.User{})    defer db.Close()}func GetDB() *gorm.DB {    return db}用户/usecase.gopackage usersimport (    "fmt"    "github.com/teamhide/gin_boilerplate/db")type UserUsecase interface {    RegisterUserUsecase(email, password1, password2 string) (bool, error)}func RegisterUserUsecase(email, password1, password2 string) (bool, error) {    db := db.GetDB()    fmt.Println(db)    return true, nil}在用例中,如您所知,我刚刚打印了 db 变量以检查它是否具有正确的 db 数据。但是当我执行它时,它会抛出错误。...runtime error: invalid memory address or nil pointer dereference.../Users/hide/go/src/github.com/teamhide/hfive_go/users/controllers.go:18 (0x15b3301)        UserController.RegisterDefaultUser: uc.RegisterUserUsecase(form.Email, form.Password1, form.Password2)...我的代码有问题吗?
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

堆栈跟踪引用了controllers.go:18您未在此处包含的文件。

功能有db.go问题Init()。函数完成后,您将关闭与数据库的连接。defer此外,您在函数末尾使用关键字时似乎误解了它的行为。


查看完整回答
反对 回复 2022-04-26
  • 1 回答
  • 0 关注
  • 350 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信