새롭게 시작한 프로젝트에서 go 언어를 도입해봤다. 배우기 시작한지 1주일도 안됐지만 에러가 터져나오는데 데이터베이스로 postgresql을 선택한 뒤 연결 하려고 했다.
package storage
import (
"database/sql"
"fmt"
"log"
"os"
"github.com/joho/godotenv"
)
var db *sql.DB
func InitDB() {
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
dbHost := os.Getenv("DB_HOST")
dbPort := os.Getenv("DB_PORT")
dbUser := os.Getenv("DB_USER")
dbPass := os.Getenv("DB_PASSWORD")
dbName := os.Getenv("DB_NAME")
db, err = sql.Open("postgres", fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable", dbHost, dbUser, dbPass, dbName, dbPort))
if err != nil {
panic(err.Error())
}
err = db.Ping()
if err != nil {
panic(err.Error())
}
fmt.Println("Successfully connected to database")
}
func GetDB() *sql.DB {
return db
}
일단 겉보기엔 문제가 없었다. 하지만 실행을 시키니

이런 에러가 떴다. 구글링을 해보니...
How do I solve «panic: sql: unknown driver "postgres" (forgotten import?)»?
I'm trying to INSERT data into POSTGRES from a .csv (pre-fixed width / tabular ) with GO. What I've done: package main import ( "bufio" "database/sql" "encoding/csv" "encoding/js...
stackoverflow.com
위 링크에서 해답을 찾을 수가 있었는데 SQL 작업을 하기 위해서 sql/database 패키지를 import 했지만 이는 일반 인터페이스일 뿐 구체적인 구현을 import 해야되며 postgresql을 사용하기 위해선 postgresql 드라이버를 가져와야 한다는 것이다.
따라서 해답대로
_ "github.com/lib/pq"
를 import 해주었다. 데이터 베이스 드라이버는 import 문 앞에 _를 넣어야 한다고 한다. 명시적으로 사용하지는 않지만 database/sql 패키지에서 필요하기 때문이라고 한다.

공부해가며 정리한 내용입니다. 모든 지적 감사히 받겠습니다:)
'프로그래밍 언어 > Golang' 카테고리의 다른 글
[GoLang] 환경변수(.env) 설정 (1) | 2023.12.08 |
---|