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

标签 ubuntu go odbc

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

isql -v "CData Redis Source"

一切都按预期进行。我知道我安装了 unixODBC 2.3.1 (isql --version)。

问题

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

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 数据库驱动程序)一起工作。

关于ubuntu - 无法在 Linux 上使用 alexbrainman/odbc 连接到 Go 中的第 3 方 ODBC 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47161073/

相关文章:

perl - apache2-Ubuntu 中的 Bugzilla 安装问题

ruby-on-rails - puma: puma.sock 没有那个文件或目录

security - 如何在 Ubuntu 中更改 USB 内存棒(pendrive)的权限?

C# Datetime 到 ODBC Datetime 转换错误

php - Access ODBC : Wrong value returned for numeric (integer) fields

sql - 函数参数列表错误 : '=' not recognized. 无法解析查询文本

linux - 如何打印索引为 24 的文件描述符总数

go - 生成唯一ID并附加到Slice

arrays - 紧急运行时错误索引超出范围 [3],长度为 3

c - 将 *C.uint8_t 转换为 []uint8 是否安全?