Gin连接mysql

2023年1月21日12:28:29

Open函数只是校验参数格式是否正确,不参与数据库连接

db对象可安全的被 goroutine并发使用 , 并维护自己的空闲连接池, 因此Open函数应该只被调用一次, 很少需要关闭db对象

设置数据库连接的最大连接数 , n>0 并小于最大空闲连接数.会将最大空闲连接数减小到匹配最大开启连接数的限制,如果n<=0 ,不会限制最大开启连接数,默认0
func (db *DB) SetMaxOpenConns(n int) 

设置连接池中最大空闲连接数,如果n>最大开启连接数,则新的最大闲置连接数会减小到最大开启连接数的限制 ,如果n<=0 ,不会保留最大空闲连接数
func (db *DB) SetMaxIdleConns(n int)
package main

import (
	"database/sql"
	"fmt"
	"github.com/gin-gonic/gin"
	_ "github.com/go-sql-driver/mysql"
	"net/http"
)


// 定义全局db变量
var db *sql.DB

func main() {
	router := gin.Default() // 默认路由

	err := initDB()
	if err != nil {
		fmt.Printf("init db error:%v \n ", err)
	} else {
		fmt.Println("连接成功db")
	}
    defer db.Close()
	router.Run()
}

func initDB() (err error) {
	dsn := "root:root@tcp(127.0.0.1:3306)/fyouku"
	// 这里db不要使用:= , 全局变量赋值 , 在main中使用
	// 这里不会校验账号密码是否正确
	db, err = sql.Open("mysql", dsn)
	if err != nil {
		return err
	}
	//尝试数据库连接
	err = db.Ping()
	if err != nil {
		return err
	}
    db.SetConnMaxLifetime(time.Second*10)//连接存活最大时间
	db.SetMaxIdleConns(200) //最大空闲连接数
	db.SetMaxOpenConns(10) // 最大连接数
	return nil
}

  • 作者:苗先生的PHP记录
  • 原文链接:https://blog.csdn.net/s1095622320/article/details/125339004
    更新时间:2023年1月21日12:28:29 ,共 898 字。