go type_error ai_generated true

error: sql: Scan error on column index 1, name "age": converting driver.Value type int64 ("25") to a uint8: invalid syntax

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

Also available as: JSON · Markdown · 中文
80%Fix Rate
88%Confidence
0Evidence
2024-01-10First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
1.20 active

Root Cause

数据库返回 int64 类型,但目标变量声明为 uint8,导致类型转换失败。

generic

中文

查询结果列类型与 Go 变量声明不匹配,database/sql 在扫描时无法进行窄类型转换。

Workarounds

  1. 95% success
    将目标变量改为 int64 或 sql.NullInt64
  2. 80% success
    在 SQL 查询中使用 CAST(age AS UNSIGNED) 预转换

Dead Ends

Common approaches that don't work:

  1. 80% fail

    database/sql 内部处理类型转换,断言无效且可能 panic

  2. 70% fail

    数据错误被静默忽略,导致业务逻辑使用错误数据