GORM pq 连接太多

GORM pq too many connections

我在我的项目中使用 GORM,一切都很好,直到我收到一条错误消息:

pq: sorry, too many clients already

我只是使用默认配置。错误发生在我对我的应用程序做了很多测试请求之后。

重新启动应用程序后错误消失了。所以,我认为在我完成查询后 GORM 连接不会被释放。我没有对 GORM 代码进行足够深入的检查,我只是在这里问一下,也许有人已经体验过了?

您收到的错误消息是 PostgreSQL 错误,而不是 GORM。这是因为你多次打开数据库连接造成的

db, err := gorm.Open("postgres", "user=gorm dbname=gorm")

应该启动一次,然后再参考。

sync.Once.Do(func() {
    instance, err := gorm.Open("postgres",
        "root:password@"+
            "tcp(localhost:3306)/rav"+
            "?charset=utf8&parseTime=True")
    if err != nil {
        log.Println("Connection Failed to Open")
        return
    }
    log.Println("Connection Established here")
    instance.DB().SetMaxIdleConns(10)
    instance.LogMode(true)
})

您可以将连接限制为单例函数,这样即使它被多次调用,连接也会发生一次。