diff --git a/models/init.go b/models/init.go index c2f1c1a..0ffde92 100644 --- a/models/init.go +++ b/models/init.go @@ -43,11 +43,20 @@ func Init() { conf.DatabaseConfig.Name, conf.DatabaseConfig.Port)) case "mysql", "mssql": - db, err = gorm.Open(conf.DatabaseConfig.Type, fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=%s&parseTime=True&loc=Local", + var host string + if conf.DatabaseConfig.UnixSocket { + host = fmt.Sprintf("unix(%s)", + conf.DatabaseConfig.Host) + } else { + host = fmt.Sprintf("(%s:%d)", + conf.DatabaseConfig.Host, + conf.DatabaseConfig.Port) + } + + db, err = gorm.Open(conf.DatabaseConfig.Type, fmt.Sprintf("%s:%s@%s/%s?charset=%s&parseTime=True&loc=Local", conf.DatabaseConfig.User, conf.DatabaseConfig.Password, - conf.DatabaseConfig.Host, - conf.DatabaseConfig.Port, + host, conf.DatabaseConfig.Name, conf.DatabaseConfig.Charset)) default: diff --git a/pkg/conf/conf.go b/pkg/conf/conf.go index 8f0109e..207e4ac 100644 --- a/pkg/conf/conf.go +++ b/pkg/conf/conf.go @@ -17,6 +17,7 @@ type database struct { DBFile string Port int Charset string + UnixSocket bool } // system 系统通用配置 diff --git a/pkg/conf/defaults.go b/pkg/conf/defaults.go index 80ecc7e..4ecfd2b 100644 --- a/pkg/conf/defaults.go +++ b/pkg/conf/defaults.go @@ -10,10 +10,11 @@ var RedisConfig = &redis{ // DatabaseConfig 数据库配置 var DatabaseConfig = &database{ - Type: "UNSET", - Charset: "utf8", - DBFile: "cloudreve.db", - Port: 3306, + Type: "UNSET", + Charset: "utf8", + DBFile: "cloudreve.db", + Port: 3306, + UnixSocket: false, } // SystemConfig 系统公用配置