|
@@ -7,6 +7,7 @@ import (
|
|
"log"
|
|
"log"
|
|
"reflect"
|
|
"reflect"
|
|
"strings"
|
|
"strings"
|
|
|
|
+ "time"
|
|
|
|
|
|
_ "github.com/go-sql-driver/mysql"
|
|
_ "github.com/go-sql-driver/mysql"
|
|
)
|
|
)
|
|
@@ -23,10 +24,10 @@ type Mysql struct {
|
|
|
|
|
|
func (m *Mysql) Init() {
|
|
func (m *Mysql) Init() {
|
|
if m.MaxOpenConns <= 0 {
|
|
if m.MaxOpenConns <= 0 {
|
|
- m.MaxOpenConns = 100
|
|
|
|
|
|
+ m.MaxOpenConns = 30
|
|
}
|
|
}
|
|
if m.MaxIdleConns <= 0 {
|
|
if m.MaxIdleConns <= 0 {
|
|
- m.MaxIdleConns = 50
|
|
|
|
|
|
+ m.MaxIdleConns = 6
|
|
}
|
|
}
|
|
var err error
|
|
var err error
|
|
m.DB, err = sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8", m.UserName, m.PassWord, m.Address, m.DBName))
|
|
m.DB, err = sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8", m.UserName, m.PassWord, m.Address, m.DBName))
|
|
@@ -36,6 +37,7 @@ func (m *Mysql) Init() {
|
|
}
|
|
}
|
|
m.DB.SetMaxOpenConns(m.MaxOpenConns)
|
|
m.DB.SetMaxOpenConns(m.MaxOpenConns)
|
|
m.DB.SetMaxIdleConns(m.MaxIdleConns)
|
|
m.DB.SetMaxIdleConns(m.MaxIdleConns)
|
|
|
|
+ m.DB.SetConnMaxLifetime(14400 * time.Second)
|
|
err = m.DB.Ping()
|
|
err = m.DB.Ping()
|
|
if err != nil {
|
|
if err != nil {
|
|
log.Println(err)
|
|
log.Println(err)
|
|
@@ -125,6 +127,9 @@ func (m *Mysql) Find(tableName string, query map[string]interface{}, fields, ord
|
|
defer stmtOut.Close()
|
|
defer stmtOut.Close()
|
|
|
|
|
|
rows, err := stmtOut.Query(vs...)
|
|
rows, err := stmtOut.Query(vs...)
|
|
|
|
+ if rows != nil {
|
|
|
|
+ defer rows.Close()
|
|
|
|
+ }
|
|
if err != nil {
|
|
if err != nil {
|
|
log.Println(err)
|
|
log.Println(err)
|
|
return nil
|
|
return nil
|
|
@@ -253,6 +258,9 @@ func (m *Mysql) Count(tableName string, query map[string]interface{}) int64 {
|
|
defer stmtIns.Close()
|
|
defer stmtIns.Close()
|
|
|
|
|
|
rows, err := stmtIns.Query(values...)
|
|
rows, err := stmtIns.Query(values...)
|
|
|
|
+ if rows != nil {
|
|
|
|
+ defer rows.Close()
|
|
|
|
+ }
|
|
if err != nil {
|
|
if err != nil {
|
|
log.Println(err)
|
|
log.Println(err)
|
|
return -1
|
|
return -1
|