簡體   English   中英

無法在 Linux 上使用 alexbrainman/odbc 在 Go 中連接到第 3 方 ODBC 驅動程序

[英]Unable to connect to 3rd party ODBC driver in Go with alexbrainman/odbc on Linux

我正在嘗試使用alexbrainman ODBC 驅動程序在 Go 中使用第 3 方 ODBC 驅動程序(可在此處下載)連接到數據源。 我已經使用以下方法測試了有問題的 DSN:

isql -v "CData Redis Source"

那里一切都按預期工作。 而且我知道我安裝了 unixODBC 2.3.1 ( isql --version )。

問題

當我嘗試運行以下 Go 程序時,我收到此錯誤消息,該消息源自db.Ping()調用(Google 翻譯似乎無法翻譯):

SQLDriverConnect {㄰こ0}[unixODBC]湉慶潥⁤潥潬瀦捥楴湯猠牴湩祳瑮硡慍⁴湩敤⁴湩敤⁸ㅛ㩝

我的代碼:

package main

import (
  _ "github.com/alexbrainman/odbc"
  "database/sql"
  "log"
)

func main() {
  db, err := sql.Open("odbc","DSN=CData Redis Source")
  if err != nil {
    log.Fatal(err);
  }
  
  var (
    name string
  )
  
  rows, err := db.Ping()
  if err != nil {
    log.Fatal(err)
  }
}

如果我執行db.Query()db.Prepare()我會看到同樣的錯誤。

詳情

  • Ubuntu 16.04.3 LTS
  • UnixODBC 2.3.1
  • Redis 的 CData 軟件 ODBC 驅動程序
  • go1.6.2 linux/amd64
  • github.com/alexbrainman/odbc

請求

我很樂意翻譯錯誤消息以幫助我調試和/或幫助我確定為什么我的錯誤消息不是英文和/或錯誤消息的實際建議解決方案。

事實證明,我需要確保 CData 驅動程序配置為使用 UTF-16 編碼,這是 unixODBC 所要求的。 為此,我編輯了驅動程序的 INI 文件:

/opt/cdata/cdata-odbc-driver-for-redis/lib/cdata.odbc.redis.ini

[Driver]
DriverManagerEncoding = UTF-16

完成此操作后,CData 驅動程序按預期與 alexbrainman/odbc 數據庫驅動程序(以及其他與 Go 相關的 ODBC 數據庫驅動程序)一起工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM