使用pgx扫描int4range类型出现赋值错误的技术求助
解决pgx扫描int4range列到pgtype.Int4range变量的错误
问题描述
我有一个int4range类型的数据库列,希望使用pgx对其进行扫描。我将变量定义为pgtype.Int4range类型,但出现了如下错误:
cannot assign &{{18 2} {86 2} i e 2} to **int64
代码逻辑如下:
for rows.Next() { .... err = rows.Scan( ... &healthRange) }
解决方案
- 确认pgx版本兼容性:确保使用的pgx版本支持
pgtype.Int4range类型,优先使用最新稳定版避免版本适配问题 - 检查变量声明:
healthRange必须直接声明为pgtype.Int4range类型,不能是指针或其他类型,正确声明示例:var healthRange pgtype.Int4range - 排查其他扫描参数:错误提示中的
**int64类型不匹配,大概率是Scan方法里的其他参数类型与对应数据库列不匹配,逐一检查每个参数的类型是否和列类型对应 - 尝试显式扫描转换:如果直接扫描仍有问题,可以先将列值扫描为字符串,再手动转换为
pgtype.Int4range:var rawRange string err = rows.Scan(..., &rawRange) if err != nil { // 处理错误逻辑 } err = healthRange.Scan(rawRange)
内容的提问来源于stack exchange,提问作者mistermims
相关产品推荐
相关产品推荐

