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)
})
您可以将连接限制为单例函数,这样即使它被多次调用,连接也会发生一次。
我在我的项目中使用 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)
})