🐾   [golang] go에서 DB연결하는 방법

DB 생성하는 함수

var xormDb *xorm.Engine

func ConfigureDatabase() *xorm.Engine {
var err error
dbConnection := config.Config.Database.ConnectionString

xormDb, err := xorm.NewEngine(Config.Database.Driver, dbConnection) //Create Engine
if err != nil {
panic(fmt.Errorf("Database open error: error: %s \n", err))
} else {
fmt.Println("DB connected: ", Config.Database.Connection) //DB 연결 성공
}

xormDb.SetMaxOpenConns(10)  //데이터베이스에 열린 연결의 최대 수가 설정
xormDb.SetMaxIdleConns(5) //idle connection pool 의 최대 연결 수를 설정
xormDb.SetConnMaxLifetime(10 * time.Minute) //연결을 재사용할 수 있는 최대 시간을 설정

xormDb.ShowSQL(config.Config.Database.ShowSql)
//로그 수준이 INFO보다 클 경우 로거에서 SQL 문인지 여부
xormDb.Logger().SetLevel(core.LOG_INFO) //로거 레벨 설정

return xormDb
}
  • config.json에 있는 config.Config.Database.ConnectionString안에 값을 가져온다.
  • root:@tcp(hostname:포트번호)/study?charset=utf8 으로 값이 들어온다.

config에 Database구조체

Database struct {
Driver           string
User             string
Connection       string
ConnectionString string
}

main.go 추가내용

import (
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
)


func main() {
xorm := middleware.ConfigureDatabase() //middleware안에 있는 ConfigureDatabase함수 불러오기
xorm.Close() //main이 종료되면 DB 접속을 닫는다.
}
  • mysql를 import 하지 않아서 컴파일 에러가 났다 => github.com/go-sql-driver/mysql

GitHub

https://github.com/YooGenie/study-service/issues/13


참고

https://pkg.go.dev/database/sql#DB.SetMaxOpenConns

​ ​ ​