使用 Golang 和內置database/sql庫以及 postgreslib/pq庫,我試圖從某些記錄中具有一些空值的數據庫中讀取數據。代碼可以編譯,但是當我嘗試運行它時,出現以下錯誤。sql: Scan error on column index 38: destination not a pointer這是我的代碼: rows, err := db.Query(`SELECT * FROM observations WHERE profile_id=$1 AND year=$2 AND month=$3`, id, date.Year(), int(date.Month())) if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var id sql.NullInt64 var year sql.NullInt64 var month sql.NullInt64 var day_of_week sql.NullInt64 var hour sql.NullInt64 var profile_id sql.NullInt64 var created_at time.Time var updated_at time.Time var banking sql.NullFloat64 var hlt_pro sql.NullFloat64 var sup_shp sql.NullFloat64 var aff_con sql.NullFloat64 var biz_trv sql.NullFloat64 var investing sql.NullFloat64 var day_com sql.NullFloat64 var unique_emin sql.NullFloat64 var no_group sql.NullFloat64 var movie_goer sql.NullFloat64 var luxury_shopper sql.NullFloat64 var sports_fan sql.NullFloat64 var aland sql.NullInt64 var awater sql.NullInt64 var tractce sql.NullString var geoid sql.NullString var median_income sql.NullInt64 var total_population sql.NullInt64 var white sql.NullInt64 var black sql.NullInt64 var native_american sql.NullInt64 var asian sql.NullInt64 var pacific_islander sql.NullInt64 var other sql.NullInt64 var two_plus sql.NullInt64 var two_plus_question sql.NullInt64 var confused sql.NullInt64 var median_age sql.NullFloat64 var count sql.NullFloat64 var latitude sql.NullString var longitude sql.NullString我正在使用sql.NullType,這與執行相同*type。這是處理空情況的一種努力,它似乎適用于大多數列,但我不確定為什么它說“目標不是指針”。另外,我不知道哪個變量是問題所在。有任何想法嗎?
1 回答

莫回無
TA貢獻1865條經驗 獲得超7個贊
您的最后一個參數經度沒有通過地址傳遞。
更改為 &longitude
作為旁注,使用“select *”并假設列位置是可預測的,這是導致錯誤的一個秘訣。
您可能應該命名您選擇的所有列,以防將來的表更改導致列排序問題。
- 1 回答
- 0 關注
- 481 瀏覽
添加回答
舉報
0/150
提交
取消