我正试图使用alexbrainman ODBC驱动程序在Go中使用第三方ODBC驱动程序(可在此处下载)连接到数据源。我已经使用测试了有问题的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文件:
redis/lib/cdata.odbc.redis.ini的/opt/cdata/cdata-odbc驱动程序
[Driver]
DriverManagerEncoding = UTF-16
完成后,CData驱动程序与alexbrainman/odbc数据库驱动程序(以及其他与Go相关的odbc数据库驱动程序)一起工作。