gorm.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package db
  2. import (
  3. "ordonnance/conf"
  4. "os"
  5. "time"
  6. "gorm.io/driver/mysql"
  7. "gorm.io/gorm"
  8. )
  9. var GDB *gorm.DB
  10. func init() {
  11. GDB = GormMysql()
  12. }
  13. func GormMysql() *gorm.DB {
  14. dsn := conf.GetP1()
  15. mysqlConfig := mysql.Config{
  16. DSN: dsn, // DSN data source name
  17. DefaultStringSize: 255, // string 类型字段的默认长度
  18. DisableDatetimePrecision: true, // 禁用 datetime 精度,MySQL 5.6 之前的数据库不支持
  19. DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引
  20. DontSupportRenameColumn: true, // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列
  21. SkipInitializeWithVersion: false, // 根据版本自动配置
  22. }
  23. if db, err := gorm.Open(mysql.New(mysqlConfig), gormConfig()); err != nil {
  24. os.Exit(0)
  25. return nil
  26. } else {
  27. sqlDB, _ := db.DB()
  28. sqlDB.SetMaxIdleConns(200)
  29. sqlDB.SetMaxOpenConns(100)
  30. sqlDB.SetConnMaxLifetime(time.Minute)
  31. return db
  32. }
  33. }
  34. func gormConfig() *gorm.Config {
  35. var config = &gorm.Config{DisableForeignKeyConstraintWhenMigrating: true}
  36. return config
  37. }