오늘도 한 뼘 더

[DB] panic: Database open error: error: default addr for network 'localhost:3306' unknown 본문

DevOps & Infra/DevOps

[DB] panic: Database open error: error: default addr for network 'localhost:3306' unknown

나른한댕댕이🐶 2023. 7. 18. 10:13
728x90
반응형

  # 배경  

AWS Lambda에서 DB를 연결하는 과정에서 다음과 같은 에러가 발생하였다.

panic: Database open error: error: default addr for network 'localhost:3306' unknown

 

  # 문제  

DB를 연결하는 부분을 다음과 같이 작성하였다.

[user]:[password]@localhost:3306/[table]

AWS Lambda에 올린 코드는 Golang으로 작성하였는데, golang에서 디비를 연결할 때 sql-driver 라이브러리를 사용하였다.

해당 라이브러리 git을 확인해 보니 "tcp"또는 "unix"를 명시해줘야 했다.

https://github.com/go-sql-driver/mysql/blob/749ddf1598b47e3cd909414bda735fe790ef3d30/dsn.go#L86-L94
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)
}

 

  # 해결  

github 내용을 참고하여 다음과 같이 코드를 변경하니 DB 연결이 올바르게 되는 것을 확인하였다.

[user]:[password]@tcp(localhost:3306)/[table]
728x90
반응형
Comments