sql golang 查询时无效的内存地址或 nil 指针取消引用
sql golang invalid memory address or nil pointer dereference when do query
我试图在连接后插入数据,当我命令 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
}
我也试过像这样做同样的事情article go sql
并有同样的问题
我执行错了吗?
我敢打赌 dollar/euro/frank NPE 在执行准备好的语句的行上,如果你检查你忽略的唯一错误,它不会是 nil
,它会告诉你什么是错了。
我在使用 sqlite 时遇到了同样的问题。
正如 Ivaylo Novakov 在他的回答中所描述的那样,我必须记录准备语句的错误(我之前像你一样忽略了它 stmt, _
)
对我来说 运行 还好,只要我在开发,但是当我创建最终的二进制文件时,我忘记启用 cgo
)。
错误得到提示:
Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
我试图在连接后插入数据,当我命令 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
}
我也试过像这样做同样的事情article go sql 并有同样的问题 我执行错了吗?
我敢打赌 dollar/euro/frank NPE 在执行准备好的语句的行上,如果你检查你忽略的唯一错误,它不会是 nil
,它会告诉你什么是错了。
我在使用 sqlite 时遇到了同样的问题。
正如 Ivaylo Novakov 在他的回答中所描述的那样,我必须记录准备语句的错误(我之前像你一样忽略了它 stmt, _
)
对我来说 运行 还好,只要我在开发,但是当我创建最终的二进制文件时,我忘记启用 cgo
)。
错误得到提示:
Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub