sql >> Base de Datos >  >> RDS >> Mysql

Golang, mysql:Error 1040:Demasiadas conexiones

sql.Open realmente no abre una conexión a su base de datos.

Un sql.DB mantiene un conjunto de conexiones a su base de datos. Cada vez que consulte su base de datos, su programa intentará obtener una conexión de este grupo o creará una nueva de lo contrario. Estas conexiones se vuelven a colocar en el grupo una vez que las cierra.

Esto es lo que rows.Close() hace.Tu db.QueryRow("...") hace lo mismo internamente cuando llamas a Scan(...) .

El problema básico es que está creando demasiadas consultas, de las cuales cada una necesita una conexión, pero no está cerrando sus conexiones lo suficientemente rápido. De esta manera, su programa debe crear una nueva conexión para cada consulta.

Puede limitar la cantidad máxima de conexiones que usa su programa llamando a SetMaxOpenConns en su sql.DB.

Consulte http://go-database-sql.org/surprises.html para más información.