多次pq: sorry, too many clients already调用时出现错误GetMessages()。
请找到更新的代码:
main() 代码
func main() {
dbConn, err := InitDB()
if err != nil {
Log.Error("Connection Error: ", err.Error())
return
}
defer dbConn.Close()
go run()
var input string
fmt.Scanln(&input)
}
Run Code Online (Sandbox Code Playgroud)
数据库连接代码为:
func InitDB()(*sql.DB, error) {
connectionString := fmt.Sprintf("user=%v password='%v' dbname=%v sslmode=disable", USER, PASSWORD, DATABASE)
db, err = sql.Open(DRIVER, connectionString)
return db, err
}
Run Code Online (Sandbox Code Playgroud)
run 协程:
func run() {
for {
messages, err := GetMessages()
if err != nil {
Log.Error("Connection Error: ", err.Error())
return
}
log.Info(messages)
}
}
Run Code Online (Sandbox Code Playgroud)
GetMessages() 功能代码:
func GetMessages() (messages []string, err error) {
rows, err := db.Query(`SELECT message1, message2, message3, message4, message5,
message6, message7, message8, message9, message10, message11, message12, message13,
message14, message15, message16, message17, message18, message19, message20, message21,
message22, message23, message24, message25, message26, message27, message28, message29,
message30, message31, message32, message33, message34, message35, message36, message37,
message38, message39, message40, message41, message42, message43, message44, message45,
message46, message47, message48 FROM table1 WHERE id=1`)
if err != nil {
Log.Error("Query error", err)
return messages, err
}
var pointers []interface{}
defer rows.Close()
for rows.Next() {
pointers = make([]interface{}, 48)
messages = make([]string, 48)
for i, _ := range pointers {
pointers[i] = &messages[i]
}
err = rows.Scan(pointers...)
if err != nil {
Log.Error("Failed to scan row", err)
return messages, err
}
}
return messages, nil
}
Run Code Online (Sandbox Code Playgroud)
我检查了这个答案,我已经使用了,scan但仍然无法正常工作
更新
问题出在另一个函数中。我在使用时db.Query没有关闭返回的rows对象并反复调用该函数。我已经更新了我的代码;使用db.Exec而不是db.Query现在它正在工作。谢谢你这么多@mkopriva了这个答案。:)
尝试设置SetMaxOpenConns。默认值为 0(无限制)。这可能是导致问题的原因。如果您还有SetConnMaxLifetime将会有所帮助;否则,Postgres 将开始更长时间地保持连接,并且您会注意到内存使用量增加。
| 归档时间: |
|
| 查看次数: |
9272 次 |
| 最近记录: |