银河麒麟V10+达梦数据库DM8环境,安装UnixODBC驱动

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/目录下,我的这种方式需要配置很多环境变量,但只要按照我的步骤一定能正确连接达梦数据库。

  1. 使用解压命令tar -zxvf unixODBC-2.3.12.tar.gz -C /home/adminyw/soft/unixodbc

  2. 也可使用解压工具解压(在银河麒麟操作系统下,很多操作可以不使用命令行)

  3. 解压后文件夹是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
    
  4. 执行完成后,/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的动态
    
  5. 需要查看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
    //这上面的路径和真实路径是不一致的,需要执行下面脚本将配置文件添加的环境变量中
    //建议执行下面内容,否则有可能出错
    
  6. 修改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 
    
  7. 填写两个配置文件内容

    //在/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。*/
    
  8. 将以下信息添加到环境变量中,使用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:~$ 
    
  9. 以上内容执行成功后,在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.讨论

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

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值