sql >> Database teknologi >  >> RDS >> Mysql

Golang, mysql:Fejl 1040:For mange forbindelser

sql.Open åbner ikke rigtig en forbindelse til din database.

En sql.DB vedligeholder en pulje af forbindelser til din database. Hver gang du forespørger i din database, vil dit program forsøge at få en forbindelse fra denne pulje eller på anden måde oprette en ny. Disse forbindelser sættes derefter tilbage i poolen, når du lukker dem.

Dette er hvad rows.Close() gør.Din db.QueryRow("...") gør det samme internt, når du kalder Scan(...) .

Det grundlæggende problem er, at du opretter for mange forespørgsler, hvoraf hver enkelt skal have en forbindelse, men du lukker ikke dine forbindelser hurtigt nok. På denne måde skal dit program oprette en ny forbindelse for hver forespørgsel.

Du kan begrænse det maksimale antal forbindelser, dit program bruger, ved at ringe til SetMaxOpenConns på din sql.DB.

Se http://go-database-sql.org/surprises.html for mere information.



  1. Gengiv com.mysql.jdbc.exceptions.jdbc4.CommunicationsException med en opsætning af Spring, Hibernate og C3P0

  2. Nuværende dato i MySQL WHERE-klausul

  3. Hvad betyder det, når MySQL er i tilstanden Sender data?

  4. opret forbindelse til postgres server på google compute engine