Skip to content

Commit

Permalink
set mysql timeouts in dsn
Browse files Browse the repository at this point in the history
  • Loading branch information
cenkalti committed Oct 2, 2020
1 parent 6c3b181 commit ca2121c
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions config.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ var DefaultConfig = Config{
Password: "",
MaxOpenConns: 50,
SkipLocked: true,
DialTimeout: 30 * time.Second,
ReadTimeout: 30 * time.Second,
WriteTimeout: 30 * time.Second,
},
Listen: listenConfig{
Host: "127.0.0.1",
Expand Down Expand Up @@ -63,12 +66,18 @@ type mysqlConfig struct {
Password string
MaxOpenConns int
SkipLocked bool
DialTimeout time.Duration
ReadTimeout time.Duration
WriteTimeout time.Duration
}

func (c mysqlConfig) DSN() string {
v := url.Values{}
v.Set("parseTime", "true")
v.Set("transaction_isolation", "'READ-COMMITTED'")
v.Set("timeout", c.DialTimeout.String())
v.Set("readTimeout", c.ReadTimeout.String())
v.Set("writeTimeout", c.WriteTimeout.String())
return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?", c.User, c.Password, c.Host, c.Port, c.DB) + v.Encode()
}

Expand Down

0 comments on commit ca2121c

Please sign in to comment.