GBase 8s
安装配置
问答

ODBC连接失败

发表于2025-12-24 12:10:0398次浏览16个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】: V8.8

【操作系统】:  麒麟V10

【CPU】:

【问题描述】*: 使用GO代码以及ODBC连接8s失败,trace提示

ppid=003756e6,pid=00000000         ENTER SQLSetConnectAttrW
       SQLHDBC       0x044E1910
       SQLINTEGER    115
       SQLPOINTER    0x7FEFF88C574C
       SQLINTEGER    0
       SQLINTEGER *  0x00000000

ppid=003756e6,pid=00000000         EXIT SQLSetConnectAttrW
       SQLHDBC       0x044E1910
       SQLINTEGER    115
       SQLPOINTER    0x7FEFF88C574C
       SQLINTEGER    0
       SQLINTEGER *  0x00000000 with return code -1 (SQL_ERROR)
 

返回错误:

H [[

使用isql可以连接成功,也就是ODBC配置应该是对的

cli sdk版本:

[root@localhost cli]# esql -V
clientsdk_3.6.3_3X2_1_783c8d

odbc.ini:

[ODBC Data Sources]

test=GBase ODBC DRIVER

[test]

Driver=/opt/GBASE/gbase/lib/cli/iclis09b.so

Description=GBase ODBC DRIVER

CursorBehavior=0

Servername=gbase01

Database=gbasedb

LogonID=gbasedbt

pwd=GBase@123

CLIENT_LOCALE=zh_CN.utf8

DB_LOCALE=zh_CN.utf8

;sqlmode=oracle

GL_USEGLU=1

TRANSLATIONDLL=/opt/GBASE/gbase/lib/esql/igo4a304.so

[ODBC]

Trace=0

TraceFile=/tmp/odbctrace.out

InstallDir=/opt/GBASE/gbase

TRACEDLL=idmrs09a.so

odbcinst.ini:

[GBase ODBC DRIVER]

Driver=/opt/GBASE/gbase/lib/cli/iclit09b.so

Setup=/opt/GBASE/gbase/lib/cli/iclit09b.so

APILevel=1

FileUsage=0

SQLLevel=1

go代码:

func checkErr(err error) {

    if err != nil {

        panic(hex.EncodeToString([]byte(err.Error())))

    }

}

func (p *GBASE8S) init_drv() {

    driverName := `odbc`

    connStr := fmt.Sprintf("DSN=test;UID=%v;PWD=%v", p.Config.User, p.Config.Pwd)

    fmt.Println(`ODBC String:`, connStr)

    tdb, err := sql.Open(driverName, connStr)

    if err == nil {

        if e := tdb.Ping(); e == nil {

            p.dbConn = tdb

            p.dbConn.SetMaxOpenConns(100)

            p.dbConn.SetMaxIdleConns(5)

            p.dbConn.SetConnMaxIdleTime(0)

            p.dbConn.SetConnMaxLifetime(1 * time.Hour)

        } else {

            fmt.Println(`ping fail:`, e.Error())

            checkErr(e)

        }

    } else {

        fmt.Println(`Connect database fail`, err)

        checkErr(err)

    }

}

评论

登录后才可以发表评论
举个栗子发表于 7个月前
烦请尽快解答,非常感谢
用户头像
路路路发表于 7个月前
马上联系技术回复
用户头像
琳大大发表于 7个月前
有go驱动,下载go驱动配合gsdk使用吧。
举个栗子发表于 7个月前
@琳大大:有下载地址吗
我用的go-odbc
用户头像
琳大大发表于 7个月前
@举个栗子:go get gitee.com/GBase8s/go-gci
举个栗子发表于 7个月前
@琳大大:了解 谢谢
举个栗子发表于 7个月前
@琳大大:arm上面用的FT的库,查看了下库
[root@localhost lib]# ldd libclntsh_gbase.so
linux-vdso.so.1 (0x0000fffde95a0000)
libthsql.so => not found
libthgen.so => not found
libthos.so => not found
libthasf.so => not found
libifgls.so => not found
libifglx.so => not found
libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x0000fffde9120000)
libm.so.6 => /usr/lib64/libm.so.6 (0x0000fffde9050000)
libdl.so.2 => /usr/lib64/libdl.so.2 (0x0000fffde9020000)
libcrypt.so.1 => /usr/lib64/libcrypt.so.1 (0x0000fffde8fc0000)
libc.so.6 => /usr/lib64/libc.so.6 (0x0000fffde8e30000)
/lib/ld-linux-aarch64.so.1 (0x0000fffde95b0000)
用户头像
琳大大发表于 7个月前
@举个栗子:gsdk用的是arm的吗
举个栗子发表于 7个月前
@琳大大:下载的FT2000
举个栗子发表于 7个月前
@琳大大:gbase8s_arm/lib/libclntsh_gbase.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=c7fe9bbb5b66d1486c2b27e2d84742dda4ce773b, not stripped
举个栗子发表于 7个月前
@举个栗子:gbase8s_arm/lib/libthos.so: 错误: 对‘crypt’未定义的引用
单独引用这个库时提示这个错误
举个栗子发表于 7个月前
@举个栗子:解决了, 使用arm的库编译必须增加 -lcrypt, 在文档里面应该没有说明
用户头像
GBase用户28017发表于 7个月前
@举个栗子:arm的电脑有吗?能装瘟到死不。
用户头像
路路路发表于 7个月前
再有问题欢迎再发问答贴
用户头像
GBase用户28017发表于 7个月前
学习了。
GBase用户47954发表于 2个月前
感谢作者的精彩分享!