본문 바로가기
프로그래밍 언어/Golang

[Golang] echo postgresql 연결 시 panic: sql: unknown driver "postgres" (forgotten import?) 문제 해결

by BK0625 2023. 11. 29.
반응형

 

새롭게 시작한 프로젝트에서 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
}

 

 

일단 겉보기엔 문제가 없었다. 하지만 실행을 시키니 

 

 

 

이런 에러가 떴다. 구글링을 해보니...

 

https://stackoverflow.com/questions/52789531/how-do-i-solve-panic-sql-unknown-driver-postgres-forgotten-import

 

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