亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何修復golang sql字符串轉換掃描錯誤

如何修復golang sql字符串轉換掃描錯誤

Go
qq_遁去的一_1 2021-08-16 20:20:45
我在查詢 sqlite3 數據庫中的一行時收到以下錯誤:sql: Scan error on column index 3: converting string "" to a int64: strconv.ParseInt: parsing "": invalid syntax查詢本身有效,因為它能夠返回查詢的數據。我應該注意到數據庫中的每一行都包含幾個帶有 NULL 數據的列(僅填充Id和Email列)。我正在努力理解錯誤發生的原因以及如何解決它。SQL 表有以下九列:`0,Id,INTEGER,0,,11,Email,TEXT,0,,02,Name,TEXT,0,,03,Rsvp,INTEGER,0,,04,Guests,INTEGER,0,,05,Meal0,INTEGER,0,,06,Meal1,INTEGER,0,,07,Comments,TEXT,0,,08,ModifiedAt,TEXT,0,,0`在 server.go 中使用以下結構定義(我添加了 sql.NullString 來處理空列):type User struct {    Id         int    Email      string    Name       sql.NullString    Rsvp       sql.NullInt64    Guests     sql.NullInt64    Meal0      sql.NullInt64    Meal1      sql.NullInt64    Comments   sql.NullString    ModifiedAt sql.NullString}查詢來自以下處理程序:func Rsvp1Handler(w http.ResponseWriter, r *http.Request) {  email := r.URL.Path[len("/rsvp/"):]  var user User  err := userStatement.QueryRow(email).Scan(&user.Id, &user.Email, &user.Name, &user.Rsvp, &user.Guests, &user.Meal0, &user.Meal1, &user.Comments, &user.ModifiedAt)  switch {  case err == sql.ErrNoRows:    log.Println("No user with that ID.")    w.Header().Set("Content-Type", "text/plain")    fmt.Fprintf(w, "Email address not found: %s", email)  case err != nil:    log.Println(err)    fmt.Fprintf(w, "Database error:\n", err)  default:    log.Println("Query success. Email address: ", email)    w.Header().Set("Content-Type", "application/json")    json.NewEncoder(w).Encode(&user)}它依賴于以下常量和 var:const userSelect  = "SELECT * FROM rsvp WHERE email = ?"var userStatement   *sql.Stmt非常感謝您對錯誤的任何幫助或洞察!
查看完整描述

1 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

似乎您的一列(最有可能Rsvp)存儲為字符串類型而不是 int 并且它被設置為""而不是null

因此,您要么必須更改Rsvp(可能是不同的列)sql.NullString,重做數據庫以使數字字段具有空值而不是空字符串,或者如果您認為這是驅動程序中的錯誤,請在其跟蹤器上打開一個問題。


查看完整回答
反對 回復 2021-08-16
  • 1 回答
  • 0 關注
  • 309 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號