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

Ubuntu 无法连接到Linux上的Go with alexbrainman/ODBC中的第三方ODBC驱动程序,ubuntu,go,odbc,cdata-drivers,Ubuntu,Go,Odbc,Cdata Drivers,我正在尝试使用Go中的第三方ODBC驱动程序(可下载)连接到数据源。我已使用以下方法测试了有问题的DSN: isql -v "CData Redis Source" 那里一切正常。我知道我已经安装了unixodbc2.3.1(isql--version) 问题 当我试着运行下面的Go程序时,我得到了这个错误消息,它来自于db.Ping()调用(Google translate似乎无法翻译): SqlDriverConnection:{㄰こ0}[unixODBC]湉慶楬⁤潣湮

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

isql -v "CData Redis Source"
那里一切正常。我知道我已经安装了unixodbc2.3.1(
isql--version

问题 当我试着运行下面的Go程序时,我得到了这个错误消息,它来自于
db.Ping()
调用(Google translate似乎无法翻译):

SqlDriverConnection:{㄰こ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文件:

/用于redis/lib/cdata.odbc.redis.ini的opt/cdata/cdata odbc驱动程序


完成后,CData驱动程序按预期与alexbrainman/odbc数据库驱动程序(以及其他与Go相关的odbc数据库驱动程序)一起工作。

尝试移动此导入:
\uu“github.com/alexbrainman/odbc”
在标准导入之后:
“database/sql”
我尝试交换导入,但没有成功。谢谢@YandryPozoIt在我看来更像是unixODBC和/或CData驱动程序的问题。使用isql检查您的DSN。尝试实际连接和查询一些数据。一旦unixODBC和belower被整理好,go端通常应该可以正常工作而不会出现问题。我还怀疑,这个神秘的错误消息被ascii解释为utf-16或类似的东西。您还可以尝试检查go二进制文件链接的odbc库,并将其与isql进行比较。isql肯定有效。我将查看链接的库。谢谢,塞瓦
[Driver]
DriverManagerEncoding = UTF-16