diff --git a/models/init.go b/models/init.go index 9cebd61..9e2128d 100644 --- a/models/init.go +++ b/models/init.go @@ -9,10 +9,10 @@ import ( "github.com/gin-gonic/gin" "github.com/jinzhu/gorm" + _ "github.com/glebarez/go-sqlite" _ "github.com/jinzhu/gorm/dialects/mssql" _ "github.com/jinzhu/gorm/dialects/mysql" _ "github.com/jinzhu/gorm/dialects/postgres" - _ "github.com/glebarez/go-sqlite" ) // DB 数据库链接单例 @@ -23,20 +23,26 @@ func Init() { util.Log().Info("Initializing database connection...") var ( - db *gorm.DB - err error + db *gorm.DB + err error + confDataType string = conf.DatabaseConfig.Type ) + // 兼容已有配置中的 "sqlite3" 配置项 + if confDataType == "sqlite3" { + confDataType = "sqlite" + } + if gin.Mode() == gin.TestMode { // 测试模式下,使用内存数据库 db, err = gorm.Open("sqlite", ":memory:") } else { - switch conf.DatabaseConfig.Type { + switch confDataType { case "UNSET", "sqlite": // 未指定数据库或者明确指定为 sqlite 时,使用 SQLite 数据库 db, err = gorm.Open("sqlite", util.RelativePath(conf.DatabaseConfig.DBFile)) case "postgres": - db, err = gorm.Open(conf.DatabaseConfig.Type, fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=disable", + db, err = gorm.Open(confDataType, fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=disable", conf.DatabaseConfig.Host, conf.DatabaseConfig.User, conf.DatabaseConfig.Password, @@ -53,14 +59,14 @@ func Init() { conf.DatabaseConfig.Port) } - db, err = gorm.Open(conf.DatabaseConfig.Type, fmt.Sprintf("%s:%s@%s/%s?charset=%s&parseTime=True&loc=Local", + db, err = gorm.Open(confDataType, fmt.Sprintf("%s:%s@%s/%s?charset=%s&parseTime=True&loc=Local", conf.DatabaseConfig.User, conf.DatabaseConfig.Password, host, conf.DatabaseConfig.Name, conf.DatabaseConfig.Charset)) default: - util.Log().Panic("Unsupported database type %q.", conf.DatabaseConfig.Type) + util.Log().Panic("Unsupported database type %q.", confDataType) } } @@ -83,7 +89,7 @@ func Init() { //设置连接池 db.DB().SetMaxIdleConns(50) - if conf.DatabaseConfig.Type == "sqlite" || conf.DatabaseConfig.Type == "UNSET" { + if confDataType == "sqlite" || confDataType == "UNSET" { db.DB().SetMaxOpenConns(1) } else { db.DB().SetMaxOpenConns(100)