在这种特殊情况下,当我尝试在 DB 中写入时,不知道应该如何处理错误:所以我用这个函数插入数据库func SaveToDB(dateid string, content string) { db, err := sql.Open("mysql", dbLink) if err != nil { log.Fatal(err) } queryString := fmt.Sprintf("INSERT INTO balances (dateid, content) VALUES('%v','%v');", dateid, content) rows, err := db.Query(queryString) if err != nil { log.Fatal(err) } defer rows.Close()}但是我不想在错误重复时停止服务器所以我尝试了这个版本:func SaveToDB(dateid string, content string) { db, err := sql.Open("mysql", dbLink) if err != nil { log.Fatal(err) } queryString := fmt.Sprintf("INSERT INTO balances (dateid, content) VALUES('%v','%v');", dateid, content) rows, err1 := db.Query(queryString) if err1 != nil { thisErr, err2 := regexp.MatchString("Error 1062: Duplicate entry", err.Error()) if err2 != nil { log.Fatal("ERROR: error occured while trying to perform regex on SaveToDB", err2) } if thisErr == true { log.Println("ERROR: Not able to save in DB due to ducplicate: ", err1) }else{log.Fatal("ERROR: error occured when trying to save to DB: ", err1)} } defer rows.Close()}但在这种情况下,我会感到恐慌。那么我怎样才能在它到达“defer rows.Close()”之前阻止这个函数执行呢?我想这就是恐慌的原因...
1 回答
MM们
TA贡献1886条经验 获得超2个赞
log.Fatal一旦拥有正确的数据,就不要使用和安装延迟代码:
rows, err := db.Query(queryString)
if err != nil {
log.Error(err)
return
}
defer rows.Close()
- 1 回答
- 0 关注
- 224 浏览
添加回答
举报
0/150
提交
取消
