Hey everyone,

I'm currently setting up a mysql database on DigitalOcean and hit the following error when connecting:

failed to connect to the database: default addr for "DATABASE_CONN_STR" network unknown 

Luckily this turned out to be a pretty easy fix. In the mysql driver repo you can see that the only scenario where this error is shown is when the network doesn't match "tcp" or "unix".

 // Set default network if empty 	if cfg.Net == "" { 		cfg.Net = "tcp" 	}  	// Set default address if empty 	if cfg.Addr == "" { 		switch cfg.Net { 		case "tcp": 			cfg.Addr = "127.0.0.1:3306" 		case "unix": 			cfg.Addr = "/tmp/mysql.sock" 		default: 			return errors.New("default addr for network '" + cfg.Net + "' unknown") 		}  	} else if cfg.Net == "tcp" { 		cfg.Addr = ensureHavePort(cfg.Addr) 	} 

To fix it, all that was required was to wrap part of the connection string in tcp or unix.

 root:password@db-mysite.com:1234/db_name?ssl-mode=required&timeout=10s root:password@tcp(db-mysite.com:1234)/db_name?ssl-mode=required&timeout=10s 

Note that the host name and port on the second line is now wrapped in "tcp(...)". In my case I didn't have either set so I find it a bit strange that the "set default address if empty" check was triggered.

Thanks to this stackoverflow post and github link for the info:


This post is ad-supported