1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
package initialize
import ( "fmt" "log" "os" "time" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "gorm.io/gorm/schema" )
var DB *gorm.DB
func InitDB() error { var err error dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", DatabaseConfig.Username, DatabaseConfig.Password, DatabaseConfig.Host, DatabaseConfig.Port, DatabaseConfig.Name, ) config := mysql.New(mysql.Config{ DriverName: "mysql", DSN: dsn, SkipInitializeWithVersion: false, DefaultStringSize: 256, }) logger := logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{ SlowThreshold: time.Second * 1, Colorful: true, IgnoreRecordNotFoundError: false, LogLevel: logger.Info, }, ) opts := &gorm.Config{ DisableForeignKeyConstraintWhenMigrating: true, PrepareStmt: true, Logger: logger, NamingStrategy: schema.NamingStrategy{ TablePrefix: "t_", SingularTable: true, NameReplacer: nil, NoLowerCase: false, }, } db, err := gorm.Open(config, opts) if err != nil { return fmt.Errorf("connection to db err:%v", err) } sqlDB, err := db.DB() if err != nil { return fmt.Errorf("get db conn err:%v", err) } sqlDB.SetMaxOpenConns(int(DatabaseConfig.MaxOpenConn)) sqlDB.SetConnMaxIdleTime(time.Hour) sqlDB.SetMaxIdleConns(int(DatabaseConfig.MaxIdleConn)) sqlDB.SetConnMaxLifetime(time.Hour) DB = db log.Println("init db connection success") return err }
|