mysql.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package init_serve
  2. import (
  3. "fmt"
  4. "gorm.io/driver/mysql"
  5. "gorm.io/gorm"
  6. "gorm.io/gorm/logger"
  7. "hongze/hongze_yb/global"
  8. "log"
  9. "os"
  10. "time"
  11. )
  12. // Mysql 数据库初始化
  13. func Mysql() {
  14. mysqlConf := global.CONFIG.Mysql
  15. if len(mysqlConf.List) <= 0 {
  16. global.LOG.Error("mysql链接未配置")
  17. panic(fmt.Errorf("mysql链接未配置"))
  18. }
  19. //开启日志
  20. newLogger := logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{
  21. SlowThreshold: 200 * time.Millisecond, //慢sql :200ms
  22. LogLevel: logger.Info, //记录的日志类型,info代表所有信息都记录
  23. IgnoreRecordNotFoundError: true, //是否忽略找不到数据错误信息(只是日志记录记录成err还是普通的输出的区别,并不影响业务代码中的:找不到数据行error)
  24. Colorful: true, //是否颜色输出
  25. })
  26. mysqlMap := make(map[string]*gorm.DB)
  27. for _, conf := range mysqlConf.List {
  28. dsn := conf.Dsn
  29. db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
  30. Logger: newLogger,
  31. })
  32. if err != nil {
  33. global.LOG.Errorf("mysql 启动异常,数据库:", conf.AliasName, ";Err:", err)
  34. panic(fmt.Errorf("mysql 启动异常,数据库:", conf.AliasName, "Err:%s", err))
  35. }
  36. //创建连接池
  37. sqlDB, err := db.DB()
  38. if err != nil {
  39. global.LOG.Errorf("mysql 创建连接池失败,数据库:", conf.AliasName, ";Err:", err)
  40. panic(fmt.Errorf("mysql 创建连接池失败,数据库:", conf.AliasName, "Err:%s", err))
  41. }
  42. mysqlMap[conf.AliasName] = db
  43. // SetMaxIdleConns 设置空闲连接池中连接的最大数量
  44. sqlDB.SetMaxIdleConns(conf.MaxIdleConns)
  45. // SetMaxOpenConns 设置打开数据库连接的最大数量。
  46. sqlDB.SetMaxOpenConns(conf.MaxOpenConns)
  47. // SetConnMaxLifetime 设置了连接可复用的最大时间。
  48. //sqlDB.SetConnMaxLifetime(time.Hour)
  49. }
  50. //全局赋值数据库链接
  51. global.MYSQL = mysqlMap
  52. }