在 Go 程序中,尝试使用从 RabbitMQ 收到的每条消息的单个数据库连接都会因超出最大数量而导致错误
问题在于Go中执行SQL查询的方式。 sql.DB 是一个连接池而不是单个连接。它根据需要打开连接并重用空闲连接,但在这种情况下,连接没有正确释放。
使用 db.QueryRow 而不对返回的 *Row 值调用 Scan 时会出现问题。 *Row 保存对连接的引用,当调用 Scan 时会自动释放该连接。但是,在提供的代码中,未调用 Scan,导致连接在连接池中堆积。
要解决此问题,解决方案是如果不需要输出,则使用 db.Exec,或者对 db.QueryRow.
返回的 *Row 值调用 Scan以上是在 Go 中插入行时如何避免 PostgreSQL 连接耗尽?的详细内容。更多信息请关注PHP中文网其他相关文章!