Database connection pool exhausted: sql.Rows not closed with defer rows.Close() – Golang SQL_ROWS_CLOSE_LEAK

SQL_ROWS_CLOSE_LEAK

Eseguire una query con 'db.Query()' riserva una connessione esclusiva dal pool di connessioni; se 'defer rows.Close()' viene omesso, la connessione non viene mai restituita al pool fino a saturare il limite massimo 'SetMaxOpenConns'.

Cosa significa questo errore?

Eseguire una query con 'db.Query()' riserva una connessione esclusiva dal pool di connessioni; se 'defer rows.Close()' viene omesso, la connessione non viene mai restituita al pool fino a saturare il limite massimo 'SetMaxOpenConns'.

Messaggio originale

Database connection pool exhausted: sql.Rows not closed with defer rows.Close()

Contesto e parole chiave

Alias

  • sql.Rows not closed connection leak Go

Messaggi alternativi

  • pool connessioni database esaurito mancata chiusura rows.Close()

Prodotti

  • Go Runtime / Go Compiler / Go Modules

Piattaforme

  • Linux
  • macOS
  • Windows

Parole chiave

  • errore-golang-sql-rows-close-connection-leak
  • go
  • golang
  • golang.rete.sql-rows-close-connection-leak
  • Rete e I/O
  • SQL_ROWS_CLOSE_LEAK

Cause possibili

Origine del problema per Errore Go Database: Leak Connessioni per Mancata Chiamata a rows.Close()

Eseguire una query con 'db.Query()' riserva una connessione esclusiva dal pool di connessioni; se 'defer rows.Close()' viene omesso, la connessione non viene mai restituita al pool fino a saturare il limite massimo 'SetMaxOpenConns'.

molto comune

Diagnosi

Verifica e diagnostica per Errore Go Database: Leak Connessioni per Mancata Chiamata a rows.Close()

Eseguire i comandi go build o go vet per rilevare incongruenze a livello di codice.

Come leggere il risultato. Restituisce eventuali errori statici, disallineamenti di tipo o race condition nel codice Go.

terminal
go vet ./...

Risoluzione

Risoluzione per Errore Go Database: Leak Connessioni per Mancata Chiamata a rows.Close()

Difficoltà: mediaRischio: basso

Applicare la correzione raccomandata nel codice sorgente Go o nella configurazione dei moduli.

  1. Ispezionare la riga evidenziata dal compilatore o lo stack trace del panic
  2. Applicare il pattern idiomatico Go (sincronizzazione, gestione errori, canali)
  3. Eseguire go test -v ./... per confermare la piena stabilità
terminal
go test -v ./...

Domande frequenti

Come risolvere l'errore Errore Go Database: Leak Connessioni per Mancata Chiamata a rows.Close() in Go?

Eseguire una query con 'db.Query()' riserva una connessione esclusiva dal pool di connessioni; se 'defer rows.Close()' viene omesso, la connessione non viene mai restituita al pool fino a saturare il limite massimo 'SetMaxOpenConns'.

Approfondimenti

Schede correlate