```go
var DB *sql.DB
//注意方法名大写,就是public
func InitDB() {
//构建连接:"用户名:密码@tcp(IP:端口)/数据库?charset=utf8"
path := strings.Join([]string{userName, ":", password, "@tcp(", ip, ":", port, ")/", dbName, "?charset=utf8"}, "")
//打开数据库,前者是驱动名,所以要导入: _ "github.com/go-sql-driver/mysql"
DB, _ = sql.Open("mysql", path)
//设置数据库最大连接数
DB.SetConnMaxLifetime(2000)
//设置上数据库最大闲置连接数
DB.SetMaxIdleConns(1000)
//验证连接
if err := DB.Ping(); err != nil {
fmt.Println("opon database fail")
//return
}
fmt.Println("connnect success")
}
func Getselect(url string) int {
//开启事务
tx, err := DB.Begin()
if err != nil {
fmt.Println("tx fail2", err)
return 1
}
stmt, err := tx.Prepare("SELECT id FROM yi08 WHERE url = ?")
if err != nil {
//log.Fatal(err)
stmt.Close()
fmt.Println(err)
return 1
}
rows, err := stmt.Query(url)
id := 0
for rows.Next() {
if err := rows.Scan(&id); err != nil {
//log.Fatal(err)
fmt.Println(err)
return 1
}
// fmt.Printf("name:%s ,id:is %d\n", name, id)
}
defer rows.Close()
return id
}
func main() {
InitDB()
for{
id := Getselect("http://xxxxxxxxxxx")
fmt.Println(id)
}
}
```
这个求大神解决,过一会就提示 Too many connections
解决了,select不能 开启事务
直接用下面的代码就可以
func Getselect(url string) int {
id := 0
err := DB.QueryRow("SELECT id FROM yi08 WHERE url = ?",url).Scan(&id)
if err != nil {
//log.Fatal("出现错误",err)
fmt.Println("出现错误",err)
return 0
}
return id
}
#5
更多评论
1楼 <a href="/user/shileislslsl" title="@shileislslsl">@shileislslsl</a> 嗨,请认真回答我的问题,已经困扰好几天了
#2