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.讨论
如果还是解决不了,可留言,咱们可以互相讨论学习。
发表评论