【发布时间】:2016-03-13 06:35:25
【问题描述】:
在 Go 中,使用 SQL 数据库时,是否需要在关闭应用程序之前关闭 DB (db.Close)?数据库会自动检测到连接已经断开吗?
【问题讨论】:
-
需要记住的重要一点是 Close() 不能保证触发,尤其是当您调用
defer db.Close()时。 SIGTERM 信号将立即终止程序(除非你抓住它)并且不会调用 Close()。根据我的经验,当没有调用 Close() 时,lib/pq(最流行的 Postgres)驱动程序似乎没有挂起连接。