达梦数据库ODBC连接异常问题

一、ODBC介绍

ODBC,即开放数据库连接Open Database Connectivity,是为解决 异构数据库间的数据共享而产生的一种数据库访问接口标准。ODBC 为异构数据库访问提供统一接口,允许应用程序以SQL 为数据存取标准,存取不同DBMS管理的数据;使应用程序直接操纵DB中的数据,免除随DB的改变而改变。用ODBC 可以访问各类计算机上的DB文件,甚至访问如Excel 表和ASCI I数据文件这类非数据库对象。

二、unixODBC安装以及配置

unixODBC安装
tar -xzvf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0
./configure --enable-gui=no
make && make install

直接编译安装,正常安装完毕后,查看ODBC版本以及配置信息如下:

查看ODBC版本:odbc_config --version 

查看ODBC配置信息: odbcinst -j

正常安装完成后,/usr/local/etc/odbcinst.ini 和 /usr/local/etc/odbc.ini 两个文件都是空的,需要我们手动写配置,具体配置如下:

odbcinst.ini中,DRIVER行配置为ODBC的动态链接库文件具体路径,这里注意千万不要配置错误

DERVER:动态链接库路径(如不确定,可以find搜索看下该文件具体路径,然后指定)

odbc.ini,即为当前需要登录的DM数据库具体地址以及账号密码端口号。

[dm8]:这里是执行isql命令后跟的参数名,可以任意指定,类似登录时的别名,注意命名冲突
SERVER:ip地址 
UID:用户名
PWD:用户密码
TCP_PORT:数据库实例对应的端口号

三、发现问题:连接报错

本身在安装完ODBC后,当前连接数据库是正常的,但是这本身属于测试环境,重启虚拟机再登录执行命令连接数据库,发现报错[ISQL]ERROR: Could not SQLConnect

首先确认我们数据库是可以正常登录的,即发起ODBC连接异常,首先加-v参数查看具体报错原因

报错提示动态链接库文件不存在:[01000][unixODBC][Driver Manager]Can't open lib '/dm8/bin/libdodbc.so' : file not found

根据该报错,我们先确认文件是否存在,发现实际上是有该文件的

文件存在的话,系统无法识别到,我们可以ldd命令看下这个文件的依赖是否出现问题:

ldd /dm8/bin/libdodbc.so 


 

[root@localhost ~]# ldd /dm8/bin/libdodbc.so 
	linux-vdso.so.1 =>  (0x00007ffda23df000)
	libdmdpi.so => not found
	libdmfldr.so => not found
	libdmelog.so => not found
	libdmutl.so => not found
	libdmclientlex.so => not found
	libdmos.so => not found
	libdmcvt.so => not found
	libdmstrt.so => not found
	librt.so.1 => /lib64/librt.so.1 (0x00007f77dcd39000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f77dcb1d000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f77dc918000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f77dc60f000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f77dc30d000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f77dbf4b000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f77dbd35000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f77dd184000)
[root@localhost ~]#

 从上面报错可以看出,这个动态链接库的依赖,libdm*总计8个其他动态链接库not found,而这些动态链接库,从命名上就可以看出是DM*达梦数据库的动态链接库文件,然后我们再确认这些文件是否存在:

结果发现报错的文件,在达梦安装目录下的bin目录下均存在;

文件存在而无法识别到,这里就想到了安装数据库时,一般都需要指定数据目录安装目录等,而系统在启动某个应用时,都会把这些指定的目录在某些配置文件里设置成变量,这里又属于重启虚拟机后才无法连接,因此基本上就可以判断出,大概属于设置的变量失效导致该问题 :

切换成数据库用户dmdba,vim $HOME/.bashrc 没有任何环境变量设置,即重启虚拟机,安装数据库时设置的那些变量就不生效了:

重新写入.bashrc永久设置环境变量

export PATH
export DISPLAY=:0 (这个是dmdba调用窗口安装数据库的配置,和上述问题无关)
export DM_HOME=/dm8
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"
export PATH=$PATH:/$HOME/bin:$/HOME/.local/bin:$DM_HOME/bin 

执行source .bashrc重新加载配置,然后重新发起连接,至此问题解决。

了解更多达梦相关技术,也可访问学习达梦官网文档

DM 数据库快速上手指南 | 达梦技术文档

 

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值