linux环境odbc驱动安装
我是鹿喵喵
2023年01月13日 23:48
收录于文集
共1篇

ODBC Driver是一种动态链接库 (DLL),支持 ODBC 的应用程序(如 Excel)可以用它来访问 ODBC 数据源。每个 ODBC 驱动程序针对一个数据库管理系统 (DBMS),如 SQL Server、Access 等等。

一. 安装前检查环境gcc/make编译器

[root@dca01 tmp]# rpm -qa | egrep 'gcc|make'

# 如果没有以上工具,可以搭建yum源快速安装

[root@dca01 tmp]# yum -y install gcc make

二.下载ODBC驱动

下载地址:http://ftp.unixodbc.org/

三. 安装ODBC驱动【以unixODBC-2.3.1版本为例】

[root@loaclhost ~]# tar -xvf unixODBC-2.3.1.tar.gz

[root@loaclhost ~]# cd unixODBC-2.3.1/

#--prefix=/test指定安装目录为/test,如果不指定会默认安装到/usr/local,根据需要确定是否指定其他安装目录;如果是arm架构机器,执行 . /configure --prefix=/test --build=arm-linux,高版本unixODBC不区分架构使用./configure --prefix=/test即可

[root@loaclhost unixODBC-2.3.1]# ./configure --prefix=/test

[root@localhost unixODBC-2.3.1]# make

[root@localhost unixODBC-2.3.1]# make install

# 输出odbc driver配置项路径等内容,注意下方截图为2.3.1版本,重点关注 unixODBC 2.3.1所在行下面的内容;如果执行后发现drivers,system data sources等项配置的路径跟实际情况不符合,可以执行export ODBCSYSINI=/test/etc ,重新执行odbcinst -j后如果没有问题,更新至环境变量

[root@localhost unixODBC-2.3.1]# odbcinst -j

四、配置文件编写

USER DATA SOURCES 对应的文件里面内容为空,不需要写配置项

1.odbc.ini

#此处的odbc.ini路径是通过odbcinst -j输出的SYSTEM DATA DOURCES项的路径

代码块
Shell
自动换行
复制代码
vim /usr/local/etc/odbc.ini

#将以下内容根据实际情况填写

[dm8] #driver name 用于isql 测试

Description = DM ODBC DSND

# 这里填的驱动需与 odbcinst.ini 中的节点名称相同

Driver = DM8 ODBC DRIVER

# 达梦数据库的地址,也可以填写具体ip,例127.0.0.1

SERVER = localhost

# 数据库用户名,根据数据库的实际情况填写

UID = SYSDBA

# 数据库密码,根据实际情况填写

PWD = Dameng123

# 达梦数据库端口,根据实际情况填写

TCP_PORT = 5238
复制成功

2.odbcinst.ini 

#此处的odbc.ini路径是通过odbcinst -j输出的DRIVERS项的路径

代码块
Shell
自动换行
复制代码
vim /usr/local/etc/odbcinst.ini  

#将以下内容根据实际情况填写

[DM8 ODBC DRIVER]

Description = ODBC DRIVER FOR DM8

#此处填写的地址是{DM_HOME}/bin/libdodbc.so,按照实际情况填写,{DM_HOME}为达梦数据库安装目录,举个例子:/test/dmdba/dmdbms/bin/libdodbc.so

DRIVER = /test/dmdba/dmdbms/bin/libdodbc.so
复制成功

五、验证连接

#如果输出结果为下图,表示连接成功

isql dm8 -v

六、配置odbc常见问题&解决方案

  1. 报错 “[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified [ISQL]ERROR: Could not SQLConnect”

    a.  配置文件odbcinst.ini和odbc.ini路径是否正确,配置项是否正确

    b.  配置文件odbcinst.ini和odbc.ini中每一行的开头不允许有空格

    c.  如果发现odbcinst.ini路径不符合预期,可以通过export ODBCSYSINI=/DCE/rc110/etc/进行变更,注意后面的路径前缀根据实际情况变更

    2. 报错[IM004] [Microsoft][ODBC Driver Manager] Driver's SQLAllocHandle on SQL_HANDLE_ENV

    a.  检查odbcinst.ini文件配置的driver路径是否存在,注意指向的是libdodbc.so的path

  3. 安装unixODBC完成但是执行odbcinst -j 提示command not found

    a.  使用root账户编辑/etc/profile ,将odbcinst所在目录追加到环境变量

  4. 报错"[01000][unixODBC][Driver Manager]Can’t open lib ‘/dm8/dmdba/dmdbms/bin/libdodbc.so’ : file not found [ISQL]ERROR: Could not SQLConnect"

    a.  配置环境变量LD_LIBRARY_PATH

代码块
Shell
自动换行
复制代码
#以root身份编辑
vim /etc/profile
#/dm8/dmdba/dmdbms为达梦数据库安装目录即前面提到的{DM_HOME}
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/dmdba/dmdbms/bin/"
export PATH=$PATH:/dm8/dmdba/dmdbms/bin
#在对应用户身份下的目录执行
source /etc/profile
复制成功

    b. 确认libdodbc.so所在路径当前用户有权限,如果没有权限需要切换到root用户修改一下文件夹权限

     #注意此处的路径根据实际安装情况来

代码块
Shell
自动换行
复制代码
    chmod 755 {DM_HOME}

复制成功

   5. symbol lookup error: /home/***/bin/libdodbc.so: undefined symbol : os_mutex2_create

        a. 检查环境变量,一般是LD_LIBRARY_PATH环境变量配置问题;目前遇到这个问题是在非root用户下,发现/etc/profile中设置的环境变量,和 ~/.bashrc中设置有冲突,删除/etc/profile下对应内容,并在~/.bashrc中设置即可