@@ -82,28 +82,12 @@ func (c *SQLConnection) GetDatabase() *sqlx.DB {
82
82
83
83
var err error
84
84
85
- userinfo := c .URL .User .Username ()
86
- if password , hasPassword := c .URL .User .Password (); hasPassword {
87
- userinfo = userinfo + ":" + password
88
- }
89
- c .URL .User = nil
90
85
clean := cleanURLQuery (c .URL )
91
86
92
87
if err = retry (c .L , time .Second * 15 , time .Minute * 2 , func () error {
93
88
c .L .Infof ("Connecting with %s" , c .URL .Scheme + "://*:*@" + c .URL .Host + c .URL .Path + "?" + clean .RawQuery )
94
89
95
- if clean .Scheme == "mysql" {
96
- q := clean .Query ()
97
- q .Set ("parseTime" , "true" )
98
- clean .RawQuery = q .Encode ()
99
- }
100
- u := clean .String ()
101
- if strings .HasPrefix (u , clean .Scheme + "://" ) {
102
- u = strings .Replace (u , clean .Scheme + "://" , clean .Scheme + "://" + userinfo + "@" , 1 )
103
- }
104
- if clean .Scheme == "mysql" {
105
- u = strings .Replace (u , "mysql://" , "" , - 1 )
106
- }
90
+ u := connectionString (clean )
107
91
if c .db , err = sqlx .Open (clean .Scheme , u ); err != nil {
108
92
return errors .Errorf ("Could not Connect to SQL: %s" , err )
109
93
} else if err := c .db .Ping (); err != nil {
@@ -161,3 +145,29 @@ func maxParallelism() int {
161
145
}
162
146
return numCPU
163
147
}
148
+
149
+ func connectionString (clean * url.URL ) string {
150
+ if clean .Scheme == "mysql" {
151
+ q := clean .Query ()
152
+ q .Set ("parseTime" , "true" )
153
+ clean .RawQuery = q .Encode ()
154
+ }
155
+
156
+ username := clean .User .Username ()
157
+ userinfo := username
158
+ password , hasPassword := clean .User .Password ()
159
+ if hasPassword {
160
+ userinfo = userinfo + ":" + password
161
+ }
162
+ clean .User = nil
163
+ u := clean .String ()
164
+ clean .User = url .UserPassword (username , password )
165
+
166
+ if strings .HasPrefix (u , clean .Scheme + "://" ) {
167
+ u = strings .Replace (u , clean .Scheme + "://" , clean .Scheme + "://" + userinfo + "@" , 1 )
168
+ }
169
+ if clean .Scheme == "mysql" {
170
+ u = strings .Replace (u , "mysql://" , "" , - 1 )
171
+ }
172
+ return u
173
+ }
0 commit comments