我試圖在連接后插入數(shù)據(jù),當(dāng)我命令I(lǐng)NSERT...我能夠連接到數(shù)據(jù)庫(kù)的邏輯時(shí),但是當(dāng)我取消命令它們時(shí),我得到了錯(cuò)誤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}我也嘗試過(guò)像這篇文章 go sql一樣做同樣的事情 ,并且有同樣的問(wèn)題我是否錯(cuò)誤地實(shí)現(xiàn)了這個(gè)?
2 回答

開(kāi)滿天機(jī)
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
我打賭一美元/歐元/坦率地說(shuō),NPE 正在執(zhí)行準(zhǔn)備好的語(yǔ)句,如果你檢查你忽略的唯一錯(cuò)誤,它不會(huì)是nil
,它會(huì)告訴你出了什么問(wèn)題。

斯蒂芬大帝
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
我對(duì) sqlite 有同樣的問(wèn)題。
正如 Ivaylo Novakov 在他的回答中所描述的那樣,我必須記錄準(zhǔn)備語(yǔ)句的錯(cuò)誤(我之前像你一樣忽略了stmt, _
)
對(duì)我來(lái)說(shuō),只要我在開(kāi)發(fā)它就可以正常運(yùn)行,但是當(dāng)我創(chuàng)建最終的二進(jìn)制文件時(shí),我忘記啟用了cgo
)。
錯(cuò)誤得到了提示:
Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
- 2 回答
- 0 關(guān)注
- 149 瀏覽
添加回答
舉報(bào)
0/150
提交
取消