go data_error ai_generated true

错误:sql:列索引0扫描错误:将driver.Value类型[]uint8("123")转换为int:无效语法

error: sql: Scan error on column index 0: converting driver.Value type []uint8 ("123") to a int: invalid syntax

ID: go/database-sql-scan-type-mismatch

其他格式: JSON · Markdown 中文 · English
80%修复率
82%置信度
0证据数
2024-04-12首次发现

版本兼容性

版本状态引入弃用备注
1.20 active
1.21 active

根因分析

数据库返回的数据类型与Scan目标类型不匹配,例如将字符串转换为整数时解析失败。

English

数据库返回的数据类型与Scan目标类型不兼容,例如将字符串转换为整数时发生解析错误。

generic

解决方案

  1. 85% 成功率
    var id int
    if err := rows.Scan(&id); err != nil {
        // 使用strconv.Atoi转换字符串
    }
  2. 90% 成功率
    确保数据库列类型与Scan目标类型一致,例如使用CAST或明确指定目标类型。

无效尝试

常见但无效的做法:

  1. 90% 失败

    类型断言不会解决转换问题,数据可能丢失或错误。

  2. 60% 失败

    如果数据库实际是整数,改为string会丢失类型信息,后续处理麻烦。