心血来潮就看看 2024-02-23 10:44 采纳率: 100%
浏览 56
已结题

linux odbc怎么添加gbase数据库

linux odbc怎么添加gbase数据库?我已经试过chatgpt了,按照chatgpt的方法也不行
以下是我的操作记录和配置和报错信息


```python
[root@shell bin]# export
declare -x GBASEDBTDIR="/opt/gbase8s-odbc-driver"
declare -x GBASEDBTSERVER="afcdbserver"
declare -x GBASEDBTSQLHOSTS="/opt/gbase8s-odbc-driver/etc/sqlhosts.odbc"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="shell"
declare -x KDEDIRS="/usr"
declare -x LANG="en_US.UTF-8"
declare -x LD_LIBRARY_PATH="/opt/gbase8s-odbc-driver/lib:/opt/gbase8s-odbc-driver/lib/cli:/opt/gbase8s-odbc-driver/lib/esql"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
declare -x MAIL="/var/spool/mail/root"
declare -x ODBCINI="/etc/odbc.ini"
declare -x OLDPWD="/usr/local/unixODBC-2.3.12/odbcinst"
declare -x PATH="/opt/gbase8s-odbc-driver/bin:/usr/lib64/qt-3.3/bin:/root/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin:/root/bin"
declare -x PERL5LIB="/root/perl5/lib/perl5:"
declare -x PERL_LOCAL_LIB_ROOT=":/root/perl5"
declare -x PERL_MB_OPT="--install_base /root/perl5"
declare -x PERL_MM_OPT="INSTALL_BASE=/root/perl5"
declare -x PWD="/usr/local/bin"
declare -x QTDIR="/usr/lib64/qt-3.3"
declare -x QTINC="/usr/lib64/qt-3.3/include"
declare -x QTLIB="/usr/lib64/qt-3.3/lib"
declare -x QT_GRAPHICSSYSTEM_CHECKED="1"
declare -x QT_PLUGIN_PATH="/usr/lib64/kde4/plugins:/usr/lib/kde4/plugins"
declare -x SELINUX_LEVEL_REQUESTED=""
declare -x SELINUX_ROLE_REQUESTED=""
declare -x SELINUX_USE_CURRENT_RANGE=""
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_TTY="/dev/pts/4"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_DATA_DIRS="/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="255"
[root@shell bin]# esql -V
GBase CSDK Version 4.10, GBASE-ESQL Version 4.10.FC4G1_3.0.0
Software Serial Number AAA#B000000
[root@shell bin]# cat /opt/gbase8s-odbc-driver/etc/sqlhosts.odbc
101db onsoctcp 11.11.111.11 9088
[root@shell bin]# cat /etc/odbc.ini
[ODBC Data Sources]
#gbase=GBase ODBC DRIVER

# Define ODBC Database Driver's Below - Driver Configuration Section

[101db]
Driver=/opt/gbase8s-odbc-driver/lib/cli/iclis09b.so
#Driver=GBase ODBC DRIVER
Description=GBase ODBC DRIVER
Server=11.11.111.11
Port=9088
Database=afcdb
LogonID=afcdb
pwd=afcdb@123
Servername=101db
CursorBehavior=0
CLIENT_LOCALE=zh_CN.utf8
DB_LOCALE=zh_CN.utf8
TRANSLATIONDLL=/opt/gbase8s-odbc-driver/lib/esql/igo4a304.so

#UNICODE connection Section

[ODBC]
#uncomment the below line for UNICODE connection
UNICODE=UCS-2

#Trace file Section

Trace=0
TraceFile=/tmp/odbctrace.out
InstallDir=/opt/gbase8s-odbc-driver
TRACEDLL=idmrs09a.so
[root@shell bin]# cat /etc/odbcinst.ini 
# Example driver definitions

# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description    = ODBC for PostgreSQL
Driver        = /usr/lib/psqlodbcw.so
Setup        = /usr/lib/libodbcpsqlS.so
Driver64    = /usr/lib64/psqlodbcw.so
Setup64        = /usr/lib64/libodbcpsqlS.so
FileUsage    = 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description    = ODBC for MySQL
Driver        = /usr/lib/libmyodbc5.so
Setup        = /usr/lib/libodbcmyS.so
Driver64    = /usr/lib64/libmyodbc5.so
Setup64        = /usr/lib64/libodbcmyS.so
FileUsage    = 1

[ODBC Drivers]
GBase ODBC DRIVER=Installed
[GBase ODBC DRIVER] 
Driver=/opt/gbase8s-odbc-driver/lib/cli/iclit09b.so 
Setup=/opt/gbase8s-odbc-driver/lib/cli/iclit09b.so 
APILevel=1 
ConnectFunctions=YYY 
DriverODBCVer=03.51 
FileUsage=0 
SQLLevel=1 
smProcessPerConnect=Y

[root@shell tmp]# odbcinst -d -q
[PostgreSQL]
[MySQL]
[ODBC Drivers]
[GBase ODBC DRIVER]
[root@shell tmp]# 

[root@shell bin]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /etc/odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

[root@shell bin]# isql -v 101db
[S1000][unixODBC][GBasedbt][GBasedbt ODBC Driver][GBasedbt]Server 11.11.111.11 is not listed as a dbserver name in sqlhosts.
[ISQL]ERROR: Could not SQLConnect
[END] 2024/2/23 8:35:17

后面我根据chatgpt的方法修改了一次还是报错
[ODBC Data Sources]
afc = GBase ODBC DRIVER

[afc]
Description = GBase ODBC DRIVER
Driver = /opt/gbase8s-odbc-driver/lib/cli/iclis09b.so
Server = 11.11.111.11
Port = 9088
Database = afcdb
LogonID = afcdb
pwd = afcdb@11
CursorBehavior = 0
CLIENT_LOCALE = zh_CN.utf8
DB_LOCALE = zh_CN.utf8
TRANSLATIONDLL = /opt/gbase8s-odbc-driver/lib/esql/igo4a304.so


[root@shell tmp]# cat /etc/odbc.ini 
[ODBC Data Sources]
afc = GBase ODBC DRIVER
afcdb onsoctcp 11.11.111.11 9088

[afc]
Description = GBase ODBC DRIVER
Driver = /opt/gbase8s-odbc-driver/lib/cli/iclis09b.so
Server = afcdb
Port = 9088
Database = afcdb
LogonID = afcdb
pwd = afcdb@11
CursorBehavior = 0
CLIENT_LOCALE = en_US.utf8
DB_LOCALE = en_US.utf8
TRANSLATIONDLL = /opt/gbase8s-odbc-driver/lib/esql/igo4a304.so
[root@shell tmp]# cat /opt/gbase8s-odbc-driver/etc/sqlhosts.odbc 
afcdb onsoctcp 11.11.111.11 9088

[root@shell tmp]# isql -v afc
[S1000][unixODBC][GBasedbt][GBasedbt ODBC Driver][GBasedbt]Unable to load locale categories.
[ISQL]ERROR: Could not SQLConnect
[root@shell tmp]# isql -v afc afcdb afcdb@11
[S1000][unixODBC][GBasedbt][GBasedbt ODBC Driver][GBasedbt]Unable to load locale categories.


odbc的日志如下

[root@shell tmp]# cat odbctrace.out 
ppid=00000c31,pid=00000000       ENTER SQLSetEnvAttr
    SQLHENV       0x00EF8A10
    SQLINTEGER    200
    SQLPOINTER    0x00000002
    SQLINTEGER    0

ppid=00000c31,pid=00000000       EXIT SQLSetEnvAttr
    SQLHENV       0x00EF8A10
    SQLINTEGER    200
    SQLPOINTER    0x00000002
    SQLINTEGER    0 with return code 0 (SQL_SUCCESS)

ppid=00000c31,pid=00000000       ENTER SQLGetEnvAttr
    SQLHENV       0x00EF8A10
    SQLINTEGER    200
    SQLPOINTER    0x7FFD9737AA5C
    SQLINTEGER    139728171040768
    SQLINTEGER *  0x7F154B4B38C3

ppid=00000c31,pid=00000000       EXIT SQLGetEnvAttr
    SQLHENV       0x00EF8A10
    SQLINTEGER    200
    SQLPOINTER    0x7FFD9737AA5C
    SQLINTEGER    139728171040768
    SQLINTEGER *  0x7F154B4B38C3 with return code 0 (SQL_SUCCESS)

ppid=00000c31,pid=00000000       ENTER SQLAllocHandle
    SQLSMALLINT            2
    SQLHANDLE       0x00ef8a10
    SQLHANDLE *     0x00ee03f0

ppid=00000c31,pid=00000000       EXIT SQLAllocHandle
    SQLSMALLINT            2
    SQLHANDLE       0x00ef8a10
    SQLHANDLE *     0x00ee03f0 with return code 0 (SQL_SUCCESS)

ppid=00000c31,pid=00000000       ENTER SQLConnectW
    SQLHDBC         0x00F07790
    SQLWCHAR        1
    SQLSMALLINT     -3
    SQLWCHAR *       (null)
    SQLSMALLINT     -3
    SQLWCHAR *       (null)
    SQLSMALLINT     -3

ppid=00000c31,pid=00000000       EXIT SQLConnectW
    SQLHDBC         0x00F07790
    SQLWCHAR        1
    SQLSMALLINT     -3
    SQLWCHAR *       (null)
    SQLSMALLINT     -3
    SQLWCHAR *       (null)
    SQLSMALLINT     -3 with return code -1 (SQL_ERROR)

ppid=00000c31,pid=00000000       ENTER SQLGetDiagRecW
    ,SQLSMALLINT     2
    SQLHANDLE       0x00F07790
    SQLSMALLINT     1
    SQLWCHAR *        
    SQLINTEGER *    0x7FFD9737B42C
    SQLWCHAR *       SQLConnectW
    SQLHDBC         0x00F07790
    SQLWCHAR        1
    SQLSMALLINT     -3
    SQLWCHAR *       (null)
    SQLSMALLINT     -3
    SQLWCHAR *       (null)
    SQLSMALLINT     -3
    SQLSMALLINT     2056
    SQLSMALLINT *   0x7FFD9737B426

ppid=00000c31,pid=00000000       EXIT SQLGetDiagRecW
    ,SQLSMALLINT     2
    SQLHANDLE       0x00F07790
    SQLSMALLINT     1
    SQLWCHAR *       S
    SQLINTEGER *    0x7FFD9737B42C
    SQLWCHAR *       [
    SQLSMALLINT     2056
    SQLSMALLINT *   0x7FFD9737B426 with return code 0 (SQL_SUCCESS)

ppid=00000c31,pid=00000000       ENTER SQLGetDiagRecW
    ,SQLSMALLINT     2
    SQLHANDLE       0x00F07790
    SQLSMALLINT     2
    SQLWCHAR *       S
    SQLINTEGER *    0x7FFD9737B42C
    SQLWCHAR *       
    SQLSMALLINT     2056
    SQLSMALLINT *   0x7FFD9737B426

ppid=00000c31,pid=00000000       EXIT SQLGetDiagRecW
    ,SQLSMALLINT     2
    SQLHANDLE       0x00F07790
    SQLSMALLINT     2
    SQLWCHAR *       S
    SQLINTEGER *    0x7FFD9737B42C
    SQLWCHAR *       
    SQLSMALLINT     2056
    SQLSMALLINT *   0x7FFD9737B426 with return code 100 (SQL_NO_DATA_FOUND)

ppid=00000c31,pid=00000000       ENTER SQLFreeHandle
    SQLSMALLINT            2
    SQLHANDLE       0x00f07790

ppid=00000c31,pid=00000000       EXIT SQLFreeHandle
    SQLSMALLINT            2
    SQLHANDLE       0x00000000 with return code 0 (SQL_SUCCESS)

ppid=00000c31,pid=00000000       ENTER SQLFreeHandle
    SQLSMALLINT            1
    SQLHANDLE       0x00ef8a10

ppid=00000c31,pid=00000000       EXIT SQLFreeHandle
    SQLSMALLINT            1
    SQLHANDLE       0x00000000 with return code 0 (SQL_SUCCESS)

```

  • 写回答

19条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2024-02-23 10:46
    关注

    🌈🌈🌈参考通义千问和郭老师的小迷弟雅思莫了-编写提供!🌈🌈🌈
    您可以参考如下,如果回答的不正确,及时评论区回复我,我会根据你错误描述追加回复。如果解决了您的问题,麻烦帮我点击个采纳!谢谢您的肯定!

    在Linux上添加GBase数据库到ODBC的步骤如下:

    1. 确保已经正确安装了GBase ODBC驱动程序。
    2. 创建/etc/odbc.ini文件,用于定义数据源:
    [ODBC Data Sources]
    GBaseDSN=GBase ODBC DRIVER
    
    [GBaseDSN]
    Driver=/opt/gbase8s-odbc-driver/lib/cli/iclis09b.so
    Description=GBase ODBC Connection
    ServerName=101db
    Database=afcdb
    Port=9088
    LogonID=afcdbuser
    Password=afcdbpassword
    ServerType=onsoctcp
    

    确保替换ServerName为你的sqlhosts.odbc中定义的名称,DatabaseLogonIDPassword替换为实际的数据库名、用户名和密码。

    1. /etc/odbcinst.ini中添加GBase ODBC驱动程序配置:
    [ODBC Drivers]
    GBase ODBC DRIVER=Installed
    
    [GBase ODBC DRIVER]
    Description     = GBase ODBC DRIVER
    Driver          = /opt/gbase8s-odbc-driver/lib/cli/iclis09b.so
    Setup           = /opt/gbase8s-odbc-driver/lib/cli/iclis09b.so
    APILevel        = 1
    ConnectFunctions=YYY
    DriverODBCVer   = 03.51
    FileUsage       = 0
    SQLLevel        = 1
    smProcessPerConnect=Y
    
    1. 确认/opt/gbase8s-odbc-driver/etc/sqlhosts.odbc文件中包含了服务器的信息:
    101db onsoctcp 11.11.111.11 9088
    
    1. 重启ODBC服务以应用配置更改(如果需要):
    sudo service unixODBC restart
    
    1. 测试连接:
    isql -v GBaseDSN
    

    根据你提供的日志,错误信息表明GBasedbt无法加载locale类别。这可能是因为系统缺少必要的locale设置。你可以尝试创建或启用所需的locale。例如,如果需要zh_CN.utf8,可以使用以下命令:

    sudo locale-gen zh_CN.UTF-8
    

    然后重启系统以应用locale更改。如果locale不是问题,那么可能是其他配置错误,如服务器名称、端口、用户名或密码不正确。请仔细检查这些设置。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(18条)

报告相同问题?

问题事件

  • 系统已结题 3月5日
  • 已采纳回答 2月26日
  • 创建了问题 2月23日