无法使用Linux上的alexbrainman / odbc连接到Go中的第三方ODBC驱动程序

时间:2017-11-07 15:03:30

标签: ubuntu go odbc

我尝试使用here在Go中使用第三方ODBC驱动程序(可下载的alexbrainman ODBC driver)连接数据源。我使用以下方法测试了有问题的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

请求

我对错误消息的翻译感到满意,以帮助我调试和/或帮助确定我的错误消息不是英文的原因和/或实际建议的错误消息解决方案。

1 个答案:

答案 0 :(得分:0)

事实证明,我需要确保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数据库驱动程序)。