|
|
|
@ -13,6 +13,7 @@ import (
|
|
|
|
|
"path" |
|
|
|
|
"strings" |
|
|
|
|
|
|
|
|
|
_ "github.com/denisenkom/go-mssqldb" |
|
|
|
|
_ "github.com/go-sql-driver/mysql" |
|
|
|
|
"github.com/go-xorm/core" |
|
|
|
|
"github.com/go-xorm/xorm" |
|
|
|
@ -85,6 +86,8 @@ func LoadConfigs() {
|
|
|
|
|
setting.UseMySQL = true |
|
|
|
|
case "postgres": |
|
|
|
|
setting.UsePostgreSQL = true |
|
|
|
|
case "mssql": |
|
|
|
|
setting.UseMSSQL = true |
|
|
|
|
case "tidb": |
|
|
|
|
setting.UseTiDB = true |
|
|
|
|
} |
|
|
|
@ -113,6 +116,20 @@ func parsePostgreSQLHostPort(info string) (string, string) {
|
|
|
|
|
return host, port |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func parseMSSQLHostPort(info string) (string, string) { |
|
|
|
|
host, port := "127.0.0.1", "1433" |
|
|
|
|
if strings.Contains(info, ":") { |
|
|
|
|
host = strings.Split(info, ":")[0] |
|
|
|
|
port = strings.Split(info, ":")[1] |
|
|
|
|
} else if strings.Contains(info, ",") { |
|
|
|
|
host = strings.Split(info, ",")[0] |
|
|
|
|
port = strings.TrimSpace(strings.Split(info, ",")[1]) |
|
|
|
|
} else if len(info) > 0 { |
|
|
|
|
host = info |
|
|
|
|
} |
|
|
|
|
return host, port |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func getEngine() (*xorm.Engine, error) { |
|
|
|
|
connStr := "" |
|
|
|
|
var Param string = "?" |
|
|
|
@ -137,6 +154,9 @@ func getEngine() (*xorm.Engine, error) {
|
|
|
|
|
connStr = fmt.Sprintf("postgres://%s:%s@%s:%s/%s%ssslmode=%s", |
|
|
|
|
url.QueryEscape(DbCfg.User), url.QueryEscape(DbCfg.Passwd), host, port, DbCfg.Name, Param, DbCfg.SSLMode) |
|
|
|
|
} |
|
|
|
|
case "mssql": |
|
|
|
|
host, port := parseMSSQLHostPort(DbCfg.Host) |
|
|
|
|
connStr = fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;", host, port, DbCfg.Name, DbCfg.User, DbCfg.Passwd) |
|
|
|
|
case "sqlite3": |
|
|
|
|
if !EnableSQLite3 { |
|
|
|
|
return nil, errors.New("This binary version does not build support for SQLite3.") |
|
|
|
|