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

查询时sql golang无效的内存地址或零指针取消引用

查询时sql golang无效的内存地址或零指针取消引用

Go
富国沪深 2022-06-06 16:55:45
我试图在连接后插入数据,当我命令INSERT...我能够连接到数据库的逻辑时,但是当我取消命令它们时,我得到了错误panic: runtime error: invalid memory address or nil pointer dereference[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x40f8e2a]这是我的功能:func Connect() (*sql.DB, error) {    db, err := sql.Open("postgres", os.Getenv("PG_URL"))    if err != nil {        return nil, err    }    defer db.Close()    stmt, _ := db.Prepare("INSERT INTO users(name, email, password) VALUES(?,?,?)")    res, err := stmt.Exec("test", "test@mail.com", "12344")    if err != nil{        panic(err.Error())    }    fmt.Println(res)    fmt.Println("Successfully connected!")    return db, nil}我也尝试过像这篇文章 go sql一样做同样的事情 ,并且有同样的问题我是否错误地实现了这个?
查看完整描述

2 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

我打赌一美元/欧元/坦率地说,NPE 正在执行准备好的语句,如果你检查你忽略的唯一错误,它不会是nil,它会告诉你出了什么问题。



查看完整回答
反对 回复 2022-06-06
?
斯蒂芬大帝

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

我对 sqlite 有同样的问题。

正如 Ivaylo Novakov 在他的回答中所描述的那样,我必须记录准备语句的错误(我之前像你一样忽略了stmt, _

对我来说,只要我在开发它就可以正常运行,但是当我创建最终的二进制文件时,我忘记启用了cgo)。

错误得到了提示:

Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub


查看完整回答
反对 回复 2022-06-06
  • 2 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

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