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.讨论

如果还是解决不了,可留言,咱们可以互相讨论学习。

精彩链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。