0

我正在尝试使用alexbrainman ODBC 驱动程序在 Go 中使用3rd 方 ODBC 驱动程序(可在此处下载)连接到数据源。我已经使用以下方法测试了有问题的 DSN:

isql -v "CData Redis Source"

那里的一切都按预期工作。而且我知道我已经安装了 unixODBC 2.3.1 ( isql --version)。

问题

当我尝试运行以下 Go 程序时,我收到此错误消息,它是由db.Ping()调用产生的(谷歌翻译似乎无法翻译):

SQLDriverConnect: {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)
  }
}

如果我执行 adb.Query()或 a ,我会看到相同的错误db.Prepare()

细节

  • Ubuntu 16.04.3 LTS
  • UnixODBC 2.3.1
  • 用于 Redis 的 CData 软件 ODBC 驱动程序
  • go1.6.2 linux/amd64
  • github.com/alexbrainman/odbc

请求

我很乐意翻译错误消息以帮助我调试和/或帮助确定为什么我的错误消息不是英文和/或错误消息的实际建议解决方案。

4

1 回答 1

1

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

于 2017-11-08T19:38:58.943 回答