fix cannot connect PostgreSQL via Unix socket (#253)

This commit is contained in:
MaysWind
2025-09-21 22:00:22 +08:00
parent bf21e45cba
commit cbe784172e
2 changed files with 75 additions and 8 deletions
+8 -8
View File
@@ -128,16 +128,16 @@ func getMysqlConnectionString(dbConfig *settings.DatabaseConfig) (string, error)
}
func getPostgresConnectionString(dbConfig *settings.DatabaseConfig) (string, error) {
host, port, err := net.SplitHostPort(dbConfig.DatabaseHost)
if err != nil {
return "", errs.ErrDatabaseHostInvalid
}
if strings.HasPrefix(dbConfig.DatabaseHost, "/") { // unix socket path
return fmt.Sprintf("postgres://%s:%s@:%s/%s?sslmode=%s&host=%s",
url.QueryEscape(dbConfig.DatabaseUser), url.QueryEscape(dbConfig.DatabasePassword), port, dbConfig.DatabaseName, dbConfig.DatabaseSSLMode, host), nil
return fmt.Sprintf("postgres:///%s?sslmode=%s&host=%s&user=%s&password=%s",
dbConfig.DatabaseName, dbConfig.DatabaseSSLMode, dbConfig.DatabaseHost, url.QueryEscape(dbConfig.DatabaseUser), url.QueryEscape(dbConfig.DatabasePassword)), nil
} else {
host, port, err := net.SplitHostPort(dbConfig.DatabaseHost)
if err != nil {
return "", errs.ErrDatabaseHostInvalid
}
return fmt.Sprintf("postgres://%s:%s@%s:%s/%s?sslmode=%s",
url.QueryEscape(dbConfig.DatabaseUser), url.QueryEscape(dbConfig.DatabasePassword), host, port, dbConfig.DatabaseName, dbConfig.DatabaseSSLMode), nil
}