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

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

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

Go
料青山看我应如是 2023-08-14 16:53:14
我是 golang 和 gorm 框架的新手。这是我使用 gorm 获取数据库的代码。数据库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 变量来检查它是否具有正确的数据库数据。但是当我执行它时,它会抛出错误。...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贡献1828条经验 获得超4个赞

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

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


查看完整回答
反对 回复 2023-08-14
  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

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