go data_error ai_generated true

错误:数据库行:在 Rows.Err 之后调用 Rows.Next

error: sql: Rows.Next: called after Rows.Err

ID: go/database-sql-nil-rows

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

版本兼容性

版本状态引入弃用备注
1.18 active

根因分析

在迭代数据库结果时,先调用了 Rows.Err() 导致迭代器状态异常,再调用 Rows.Next() 引发错误。

English

在迭代数据库结果时,先调用了 Rows.Err() 导致迭代器状态异常,再调用 Rows.Next() 引发错误。

generic

解决方案

  1. 98% 成功率
    for rows.Next() { /* 处理 */ }
    if err := rows.Err(); err != nil { log.Fatal(err) }
  2. 95% 成功率
    for rows.Next() { /* 处理 */ }
    if err := rows.Err(); err != nil { log.Fatal(err) }

无效尝试

常见但无效的做法:

  1. 90% 失败

    会导致数据不完整或程序崩溃。

  2. 70% 失败

    浪费资源,且未解决根本的迭代顺序问题。