我有一个类型为int4range的列,想用pgx扫描它。我将类型定义为pgtype.Int4range,但我看到错误
cannot assign &{{18 2} {86 2} i e 2} to **int64
字符串我所做的只是
for rows.Next() { .... err = rows.Scan( ... &healthRange)
型我是不是漏掉了什么?
j2qf4p5b1#
Scan从当前行读取值到dest值位置。很可能是传递给Scan的参数与行中的列不匹配。以下是该问题的复制者:
Scan
package main import ( "fmt" "github.com/jackc/pgx" "github.com/jackc/pgx/pgtype" ) func main() { conn, err := pgx.Connect(pgx.ConnConfig{ Host: "localhost", Port: 5432, User: "username", Password: "password", }) if err != nil { panic(err) } defer conn.Close() var ( healthRange pgtype.Int4range anotherVar *int64 ) row := conn.QueryRow(`select '[18,86)'::int4range, 2`) err = row.Scan(&anotherVar, &healthRange) if err != nil { panic(err) } fmt.Printf("%+v", healthRange) }
字符串错误消息为:
panic: can't scan into dest[0]: cannot assign &{{18 2} {86 2} i e 2} to **int64
型应用此更改以修复问题:
- row.Scan(&anotherVar, &healthRange) + row.Scan(&healthRange, &anotherVar)
型顺便说一句,pgtype.Int4range在github.com/jackc/pgx@v3中,它于2017年首次发布。请考虑升级到最新版本github.com/jackc/pgx/v5。
pgtype.Int4range
github.com/jackc/pgx@v3
github.com/jackc/pgx/v5
1条答案
按热度按时间j2qf4p5b1#
Scan
从当前行读取值到dest值位置。很可能是传递给Scan
的参数与行中的列不匹配。以下是该问题的复制者:
字符串
错误消息为:
型
应用此更改以修复问题:
型
顺便说一句,
pgtype.Int4range
在github.com/jackc/pgx@v3
中,它于2017年首次发布。请考虑升级到最新版本github.com/jackc/pgx/v5
。