使用 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 关注
- 431 浏览
添加回答
举报
0/150
提交
取消