Ubuntu 无法连接到Linux上的Go with alexbrainman/ODBC中的第三方ODBC驱动程序
我正在尝试使用Go中的第三方ODBC驱动程序(可下载)连接到数据源。我已使用以下方法测试了有问题的DSN: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]湉慶楬潣湮
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