UNIXODBC安装
在银河麒麟操作系统下,使用QT连接达梦数据库,一般需要DMODBC,但是DMODBC依赖UNIXODBC,因此需要安装unixodbc,在unixodbc官网下载源码进行编译和安装。
说明:root为管理员用户,adminyw为常用一般用户(与达梦教程中dmdba用户性质一样),在adminyw用户下安装了达梦数据库。
前提:DM数据库已安装,DM数据库为银河麒麟-飞腾2000版本。
1.下载
官网https://www.unixodbc.org/下载安装包unixODBC-2.3.12.tar.gz。
进入官网后,点击左侧Download按钮,进入DOWNLOAD界面,然后点击:Via HTTP: unixODBC-2.3.12.tar.gz进行下载,也可点击该链接下载。
2.安装
解压安装包,目录无中文,我是安装到/usr/local/unixodbc/目录下,默认安装/usr/local/目录下,我的这种方式需要配置很多环境变量,但只要按照我的步骤一定能正确连接达梦数据库。
使用解压命令tar -zxvf unixODBC-2.3.12.tar.gz -C /home/adminyw/soft/unixodbc 也可使用解压工具解压(在银河麒麟操作系统下,很多操作可以不使用命令行) 解压后文件夹是unixODBC-2.3.12,在该目录下打开终端,执行以下命令 //执行su命令,输入root密码,切换到root用户,不使用root权限,执行make install报权限不足
adminyw@adminyw-pc:~/soft/UnixODBC/unixODBC-2.3.12$ su
输入密码
root@adminyw-pc:/home/adminyw/soft/UnixODBC/unixODBC-2.3.12#./configure --prefix /usr/local/unixodbc
root@adminyw-pc:/home/adminyw/soft/UnixODBC/unixODBC-2.3.12# make -j4
root@adminyw-pc:/home/adminyw/soft/UnixODBC/unixODBC-2.3.12# make install
//执行完以上命令后,一般不会报错,如果报错,处理报错,重新make install
执行完成后,/usr/local/unixodbc是unixodbc安装目录,执行以下命令可查看安装内容 //执行结束后,cd到unixodbc安装目录
root@adminyw-pc:/home/adminyw/soft/UnixODBC/unixODBC-2.3.12# cd /usr/local/unixodbc
root@adminyw-pc:/usr/local/unixodbc# ll
总用量 28
drwxr-xr-x 7 root root 4096 12月 29 15:45 ./
drwxr-xr-x 14 root root 4096 12月 29 15:45 ../
drwxr-xr-x 2 root root 4096 12月 29 15:45 bin/
drwxr-xr-x 3 root root 4096 12月 29 15:45 etc/
drwxr-xr-x 3 root root 4096 12月 29 15:45 include/
drwxr-xr-x 3 root root 4096 12月 29 15:45 lib/
drwxr-xr-x 3 root root 4096 12月 29 15:45 share/
//bin目录是执行脚本
//etc下有odbc.ini,odbcinst.ini两个配置文件
//include是一些头文件
//lib是unixodbc的动态
需要查看odbc.ini,odbcinst.ini配置文件的路径是不是在真实路径下/usr/local/unixodbc/etc //查看两个配置文件的真实位置
root@adminyw-pc:/usr/local/unixodbc# odbcinst -j
unixODBC 2.3.12
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
//这上面的路径和真实路径是不一致的,需要执行下面脚本将配置文件添加的环境变量中
//建议执行下面内容,否则有可能出错
修改adminyw(安装达梦数据库用户)用户对odbc.ini和odbcinst.ini的拥有权和执行权 //赋予adminyw用户拥有权
root@adminyw-pc:/usr/local/unixodbc# chown -R adminyw:adminyw /usr/local/unixodbc
//赋予adminyw用户执行权
root@adminyw-pc:/usr/local/unixodbc# cd etc/
root@adminyw-pc:/usr/local/unixodbc/etc# ls
ODBCDataSources odbc.ini odbcinst.ini
root@adminyw-pc:/usr/local/unixodbc/etc# chmod a+w odbc.ini
root@adminyw-pc:/usr/local/unixodbc/etc# chmod a+w odbcinst.ini
填写两个配置文件内容 //在/usr/local/unixodbc/etc路径下,双击打开两个文件,进行以下配置
//odbc.ini进行以下修改:
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = 127.0.0.1
UID = SYSDBA
PWD = sa12345678
TCP_PORT = 5236
odbcinst.ini进行以下修改:
//odbcinst.ini进行以下修改:
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /home/adminyw/soft/dminstall/bin/libdodbc.so
//注意:=左右两边各有一个空格;首行和每行开始没有空格;以上信息一定要完成
//程序先读取odbc.ini内容,再从odbcinst.ini中读取驱动信息
/*参数说明:
odbc.ini:
[DM8]为索引名称;
Description为描述信息;
Driver为驱动名称,会从odbcinst.ini中读取驱动动态库,因此odbcinst.ini中索引名[DM8 ODBC DRIVER]必须与odbc.ini中驱动名称一致,就是DM8 ODBC DRIVER;
SERVER为达梦数据库服务器所在主机ip,本机可使用127.0.0.1或localhost;
UID为数据库名称;
PWD为密码;
TCP_PORT为数据库监听端口号。
odbcinst.ini:
[DM8 ODBC DRIVER]为索引名称,与odbc.ini中Driver = DM8 ODBC DRIVER保持一致;
Description为描述信息;
Driver为驱动真实位置,达梦数据库安装成功后,会有一个odbc的驱动,达梦数据库是以adminy用户安装的,位置在/home/adminyw/soft/dminstall/bin/libdodbc.so。*/
将以下信息添加到环境变量中,使用adminyw用户 //切换到adminyw用户
root@adminyw-pc:/usr/local/unixodbc/etc# su adminyw
//将达梦数据库bin目录和unixodbc的lib目录添加到环境变量中,bin和lib目录下有数据库驱动等相关动态库,不执行该操作,会报无法找到动态库错误
adminyw@adminyw-pc:/usr/local/unixodbc/etc$ echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/adminyw/soft/dminstall/bin" >> ~/.bashrc
adminyw@adminyw-pc:/usr/local/unixodbc/etc$ source ~/.bashrc
adminyw@adminyw-pc:/usr/local/unixodbc/etc$ echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/unixodbc/lib" >> ~/.bashrc
//将unixodbc中的/usr/local/unixodbc/etc添加到环境变量中,为odbc系统初始化是需要访问路径
adminyw@adminyw-pc:/usr/local/unixodbc/etc$ echo "export ODBCSYSINI=/usr/local/unixodbc/etc" >> ~/.bashrc
//将/usr/local/unixodbc/etc/odbc.ini添加到环境变量中,为odbc初始化信息
adminyw@adminyw-pc:/usr/local/unixodbc/etc$ echo "export ODBCINI=/usr/local/unixodbc/etc/odbc.ini" >> ~/.bashrc
//将/usr/local/unixodbc/bin添加到PATH环境变量中,需要在任意路径使用bin目录下各种执行命令,不设置,无法在任意路径isql命令
adminyw@adminyw-pc:/usr/local/unixodbc/etc$ echo "export PATH=/usr/local/unixodbc/bin:$PATH" >> ~/.bashrc
//以上参数立马生效,切永久生效
adminyw@adminyw-pc:/usr/local/unixodbc/etc$ source ~/.bashrc
//在adminyw用户任意目录执行export,可查看以上变量是否设置成功
adminyw@adminyw-pc:~$ export
//显示以下信息(只粘贴与该安装有关信息),则表示成功
declare -x LD_LIBRARY_PATH="/home/adminyw/soft/dminstall/bin:/usr/local/unixodbc/lib"
declare -x PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/unixodbc/bin"
declare -x ODBCINI="/usr/local/unixodbc/etc/odbc.ini"
declare -x ODBCSYSINI="/usr/local/unixodbc/etc"
//再次查看odbc.ini和odbcinst.ini的真实路径,显示以下信息则表示路径正确
adminyw@adminyw-pc:~$ odbcinst -j
unixODBC 2.3.12
DRIVERS............: /usr/local/unixodbc/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/unixodbc/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/unixodbc/etc/ODBCDataSources
USER DATA SOURCES..: /usr/local/unixodbc/etc/odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
adminyw@adminyw-pc:~$
以上内容执行成功后,在adminyw用户下,任意路径执行以下脚本 //dm8为odbc.ini中索引名称
adminyw@adminyw-pc:~$ isql dm8 -v
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| echo [string] |
| quit |
| |
+---------------------------------------+
SQL>
//显示以上信息说明unixodbc配置成功,可以通过odbc连接达梦数据库,也就可以使用odbc提供的API操作数据库
3.问题
一定认真阅读以上安装步骤,如果操作过程中遇到以下问题,请按以下解决办法执行
adminyw@adminyw-pc:~$ isql dm8 -v
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect
//该错误表示找不到数据源名称
/*有以下几种原因:
1.odbc.ini索引[]信息错误,与dm8不一致,导致找不到数据源;
2.odbc.ini没有添加到环境变量中,echo "export ODBCINI=/usr/local/unixodbc/etc/odbc.ini" >> ~/.bashrc;
3.ODBCSYSINI没有添加到环境变量中,echo "export ODBCSYSINI=/usr/local/unixodbc/etc" >> ~/.bashrc;
4.odbc.ini驱动名称和odbcinst.ini索引名称不一致,导致找不到数据源;
5.adminyw用户没有/usr/local/unixodbc/etc的权限,root@adminyw-pc:/usr/local/unixodbc# chown -R adminyw:adminyw /usr/local/unixodbc/etc。
*/
adminyw@adminyw-pc:~$ isql dm8 -v
[01000][unixODBC][Driver Manager]Can't open lib '/home/adminyw/soft/dminstall/bin/libdodbc.so' : file not found
[ISQL]ERROR: Could not SQLConnect
//该错误表示不能打开驱动
/*有以下几种原因:
1.需将达梦数据库安装目录下的bin添加到环境变量中,echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/adminyw/soft/dminstall/bin" >> ~/.bashrc;
2.odbcinst.ini中驱动配置路径不对,Driver = /home/adminyw/soft/dminstall/bin/libdodbc.so。
*/
4.讨论
如果还是解决不了,可留言,咱们可以互相讨论学习。
精彩链接
发表评论