我在 Docker 容器内安装了一个 DB2 实例。现在我尝试使用 Windows 11 x64 从一个简单的 Golang 应用程序连接到它,但出现此错误:
连接数据库时出错:无法 ping 数据库:SQLDriverConnect:{IM002} [Microsoft][Driver Manager ODBC] 未找到数据源名称且未指定默认驱动程序。
我尝试从 IBM 下载 DB2 驱动程序(https://www.ibm.com/support/pages/db2-odbc-cli-driver-download-and-installation-information),将其解压并安装在 C:/Program Files 中,将其添加到我的 PATH 环境变量中,然后重新启动我的电脑。之后,我仍然没有在“ODBC 数据源管理器”驱动程序列表中看到该驱动程序。
这是我的连接代码:
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
}
这是我的 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)
}