编辑
2023-10-16
go快速开发
00
请注意,本文编写于 572 天前,最后修改于 572 天前,其中某些信息可能已经过时。
go
import ( "fmt" "gin-blog/config" "gin-blog/model" "log" "time" "gorm.io/driver/mysql" "gorm.io/driver/sqlite" "gorm.io/gorm" "gorm.io/gorm/logger" "gorm.io/gorm/schema" ) func InitSQLiteDB(dsn string) *gorm.DB { if dsn == "" { dsn = "dev.db" } db, err := gorm.Open(sqlite.Open(dsn), gormConfig()) if err != nil { log.Fatal("SQLite 连接失败, 请检查参数") } log.Println("SQLite 连接成功") // MakeMigrate(db) return db } func InitMySQLDB() *gorm.DB { mysqlCfg := config.Cfg.Mysql dns := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", mysqlCfg.Username, mysqlCfg.Password, mysqlCfg.Host, mysqlCfg.Port, mysqlCfg.Dbname, ) db, err := gorm.Open(mysql.Open(dns), gormConfig()) if err != nil { log.Fatal("MySQL 连接失败, 请检查参数") } log.Println("MySQL 连接成功") // 迁移数据表,在没有数据表结构变更时候,建议注释不执行 // MakeMigrate(db) sqlDB, _ := db.DB() sqlDB.SetMaxIdleConns(10) // 设置连接池中的最大闲置连接 sqlDB.SetMaxOpenConns(100) // 设置数据库的最大连接数量 sqlDB.SetConnMaxLifetime(10 * time.Second) // 设置连接的最大可复用时间 return db } func gormConfig() *gorm.Config { return &gorm.Config{ // gorm 日志模式 Logger: logger.Default.LogMode(getLogMode(config.Cfg.Mysql.LogMode)), // 禁用外键约束 DisableForeignKeyConstraintWhenMigrating: true, // 禁用默认事务(提高运行速度) SkipDefaultTransaction: true, NamingStrategy: schema.NamingStrategy{ // 使用单数表名,启用该选项,此时,`User` 的表名应该是 `user` SingularTable: true, }, } }

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!