package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"time"
)
func main() {
db, err := sql.Open("mysql", "root:xxxx@tcp(localhost:3306)/xxxx?charset=utf8")
checkErr(err)
defer db.Close()
err = db.Ping()
checkErr(err)
for {
_, err = db.Query("SELECT 1")
checkErr(err)
time.Sleep(1000 * time.Millisecond)
}
fmt.Println("over")
}
func checkErr(err error) {
if err != nil {
panic(err)
}
}
这个是你的代码写的有问题。
db.Query("SELECT 1")
这句执行完,你将结果抛弃,数据库连接等待你处理结果集呢,你这样不停地Query,但不处理结果集,当然导致连接越来越多。
你可以改为:
var rows *sql.Rows
for {
rows, err = db.Query("SELECT 1")
rocheckErr(err)
rows.Close()
试试,肯定不会出现很多连接了。
#1