You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 19:35:05