执行查询时 SQL golang 内存地址无效或指针取消引用为零



我试图在连接后插入数据,当我命令逻辑时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 并且有同样的问题 我错了吗?

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

我在SQLlite上遇到了同样的问题。

正如伊瓦伊洛·诺瓦科夫(Ivaylo Novakov(在他的回答中所描述的那样,我不得不记录准备语句的错误(我像您一样忽略了stmt, _(

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

错误得到了提示:

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

最新更新