package initalize import ( "time" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/schema" ) // 初始化mysql func InitMysql(sourceMysql string) *gorm.DB { dsn := sourceMysql + "?charset=utf8mb4&parseTime=true" db, err := gorm.Open(mysql.New(mysql.Config{ DSN: dsn, // DSN data source name DefaultStringSize: 255, // string 类型字段的默认长度 DisableDatetimePrecision: true, // 禁用 datetime 精度,MySQL 5.6 之前的数据库不支持 DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引 DontSupportRenameColumn: true, // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列 SkipInitializeWithVersion: true, // 根据当前 MySQL 版本自动配置 }), &gorm.Config{ NamingStrategy: schema.NamingStrategy{ TablePrefix: "", // 表名前缀 SingularTable: true, // 使用单数表名 }, SkipDefaultTransaction: true, }) if err != nil { panic(err) } sqlDB, err := db.DB() if err != nil { panic(err) } // SetMaxIdleConns 设置空闲连接池中连接的最大数量 sqlDB.SetMaxIdleConns(4) // SetMaxOpenConns 设置打开数据库连接的最大数量。 sqlDB.SetMaxOpenConns(10) // SetConnMaxLifetime 设置了连接可复用的最大时间。 sqlDB.SetConnMaxLifetime(time.Minute * 20) return db }