I am unable to connect to my MySQL database on Azure using Go. I am seeing:
API server listening at: 127.0.0.1:XXXXX
[mysql] 2019/08/09 16:42:17 packets.go:36: read tcp XXX.XXX.X.XX:XXXXX->XX.XX.XXX.XXX:1433: read: connection reset by peer
[mysql] 2019/08/09 16:42:23 packets.go:36: read tcp XXX.XXX.X.XX:XXXXX->XX.XX.XXX.XXX:1433: read: connection reset by peer
[mysql] 2019/08/09 16:42:29 packets.go:36: read tcp XXX.XXX.X.XX:XXXXX->XX.XX.XXX.XXX:1433: read: connection reset by peer
panic: driver: bad connection
goroutine 1 [running]:
db.ConnectToDB(0x134c7aa, 0x5, 0xc0000e6000, 0x9b)
/Users/myuser/go/src/db/db-connection.go:113 +0x249
main.main()
/Users/myuser/go/src/mydbapp/main.go:12 +0x58
I tried instructions at https://docs.microsoft.com/en-us/azure/mysql/connect-go
package db
import (
"database/sql"
"fmt"
"os"
_ "github.com/go-sql-driver/mysql"
_ "github.com/lib/pq"
)
func ConnectToMydb() {
mysqlInfo := fmt.Sprintf("myusername@myservernameshort:mypassword@tcp" +
"(myservenameshort.database.windows.net:1433)/mydbname?" +
"&allowNativePasswords=true&tls=true&timeout=30s"
)
db, err := sql.Open("mysql", mysqlInfo)
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Successfully connected mydb!")
}
My JDBC equivalent connection string is as follows:
jdbc:sqlserver://myservernameshort.database.windows.net:1433;database=mydbname;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30
and that works.
The instructions at the following link were not clear if I need to go that route: https://godoc.org/github.com/go-sql-driver/mysql#RegisterTLSConfig
Please guide how I can proceed/ if you need more information/ what I could try