Go에서 DB Open이 제대로 됬는지 확인하는법.


tmp := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", cf.DB_ID, cf.DB_Password, cf.DB_IP, cf.DB_Port, cf.DB_DBName)
dbCon, err := sql.Open("mysql", tmp)
if err != nil {
    panic(err)
}
defer dbCon.Close()

go에서 mysql에 접속해서 기록하는걸 하는데 난 저 err 체크 하는 부분에서 db가 열리지 않았을때 걸릴줄 알았는데 오늘 삽질하다가 디비 서버가 꺼져있음에도 불구하고 저 부분이 넘어가는걸 확인함.

뭐지 하면서 검색해보다가 알게 된것인 go 표준함수인 sql.open 주석에 이렇게 써 있었음.

Open may just validate its arguments without creating a connection to the database. To verify that the data source name is valid, call Ping.
Open은 DB 커넥팅을 생성하지 않고 인자의 유효성만 검사함 제대로 연결되는지 확인할려면 Ping을 호출해라.

ㅋㅋㅋㅋㅋㅋㅋ

err = dbCon.Ping()
if err != nil {
    panic(err)
}

그냥 밑에 이거 추가해주면 바로 커넥트 테스트 해서 잘 되는지 확인 가능함.

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다