Eu instalei uma instância do DB2 dentro de um contêiner Docker. Agora estou tentando conectar a ele a partir de um aplicativo Golang simples, usando o Windows 11 x64, mas recebo este erro:
Erro ao conectar ao banco de dados: falha ao executar ping no banco de dados: SQLDriverConnect: {IM002} [Microsoft][Driver Manager ODBC] Nome da fonte de dados não encontrado e driver padrão não especificado.
Tentei baixar um driver DB2 da IBM ( https://www.ibm.com/support/pages/db2-odbc-cli-driver-download-and-installation-information ), descompactei/instalei em C:/Program Files, adicionei à minha variável env PATH, reiniciei meu pc. Depois disso, ainda não vejo o driver na lista de drivers do "ODBC Data Source Administrator".
Este é meu código para a conexão:
import (
"database/sql"
"fmt"
_ "github.com/alexbrainman/odbc"
)
func ConnectDB() (*sql.DB, error) {
connStr := "DATABASE=TEST1;HOSTNAME=localhost;PORT=50000;PROTOCOL=TCPIP;UID=db2inst1;PWD=db2inst1;"
db, err := sql.Open("odbc", connStr)
if err != nil {
return nil, fmt.Errorf("failed to open database: %v", err)
}
if err = db.Ping(); err != nil {
return nil, fmt.Errorf("failed to ping database: %v", err)
}
fmt.Println("Connected to DB2 database!")
return db, nil
}
E este é meu main.go:
import (
"database/sql"
"go-db-check/db"
"log"
)
func main() {
database, err := db.ConnectDB()
if err != nil {
log.Fatalf("Error connecting to database: %v", err)
}
defer func(database *sql.DB) {
closeErr := database.Close()
if closeErr != nil {
log.Println("Error during connection shutdown: ", err)
}
}(database)
}