go data_error ai_generated true

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

ID: go/database-sql-nil-rows

Also available as: JSON · Markdown · 中文
80%Fix Rate
89%Confidence
0Evidence
2024-12-02First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
1.18 active

Root Cause

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

generic

中文

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

Workarounds

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

Dead Ends

Common approaches that don't work:

  1. 90% fail

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

  2. 70% fail

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