首先,要有达梦数据库的安装包:
之后按照流程逐步安装即可
中间还需要我们复制一些提示框中的命令,然后自己执行。
安装好后,为了使用Qt访问,需要我们自己编译unixodbc
从官网下载下来,然后开始编译操作。
我中间踩了一个坑,因为我之前编译过unixodbc,然后直接把原有的程序拷贝了过来,然后在执行make -j4的时候,出现了错误。
make2: 进入目录"/data/unixODBC-2.3.14/libltdl" CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /data/unixODBC-2.3.14/missing aclocal-1.15 -I ../m4 /data/unixODBC-2.3.14/missing:行81: aclocal-1.15:未找到命令 WARNING: 'aclocal-1.15' is missing on your system. You should only need it if you modified 'acinclude.m4' or 'configure.ac' or m4 files included by 'configure.ac'. The 'aclocal' program is part of the GNU Automake package:
这个aclocal-1.15: 未找到命令的错误,根本原因是编译系统所需的automake版本与系统当前安装的版本不匹配。unixODBC 源码包中的
configure脚本是在automake 1.15环境下生成的,因此Makefile中硬编码了对aclocal-1.15的调用。
后来我重新下载了一份源码,重新编译,就可以了。所以还是使用干净的源码编译比较好。
进入源码目录,运行 configure 脚本。常用的配置选项如下:
cpp
./configure --prefix=/usr/local/unixODBC
--sysconfdir=/etc \
--enable-gui=no \
--enable-drivers=no
常用选项说明:
| 选项 | 作用 |
|---|---|
--prefix=/usr/local/unixODBC |
指定安装路径,默认为 /usr/local |
--sysconfdir=/etc |
指定配置文件目录(odbc.ini、odbcinst.ini 等) |
--enable-gui=no |
禁用 GUI 工具,减少依赖 |
--enable-drivers=no |
不编译自带驱动,仅编译驱动管理器 |
--enable-fastvalidate=yes |
启用快速验证以获得更高性能(可能影响无效句柄的错误处理) |
--build=aarch64-unknown-linux-gnu |
ARM 架构编译时追加 |
各配置选项详解
--prefix=/usr/local/unixODBC
这个选项决定了 unixODBC 主体程序的安装根目录 。执行**make install后,核心库文件(如 libodbc.so)会安装到 /usr/local/unixODBC/lib,可执行程序(如 isql、odbcinst)则在 /usr/local/unixODBC/bin 下。不指定时,默认前缀是/usr/local**。
--sysconfdir=/etc
此选项指定了 ODBC 配置文件的存放位置 。unixODBC 的核心配置文件**odbcinst.ini**(用于定义驱动)和 odbc.ini(用于定义数据源)将会被安装到 /etc 目录下,而非默认的 <prefix>/etc(即 /usr/local/unixODBC/etc)。将配置文件放在 /etc 是许多系统管理员的习惯,便于集中管理。
注意 :如果你希望配置文件也独立于系统,可以考虑像 LFS 文档那样,设置
--sysconfdir=/etc/unixODBC,将所有 ODBC 相关文件收纳在一个独立的子目录里。
--enable-gui=no
这个选项禁止编译基于 Qt 的图形化管理工具 (如 ODBCConfig)。在服务器环境或无需图形界面的场景下,禁用 GUI 可以避免引入庞大的 Qt 依赖,从而简化编译过程并减少安装体积。从 unixODBC 2.3.0 版本开始,GUI 组件已被移出主项目,因此显式禁用它通常是个好习惯。
--enable-drivers=no
此选项禁止编译 unixODBC 自带的示例或测试驱动 (如 MySQL、Postgres 等)。在实际生产环境中,你通常只会使用特定数据库厂商提供的官方 ODBC 驱动。禁用内置驱动可以避免编译无用组件,并防止这些驱动与系统上已安装的真实驱动产生冲突。同样,从 unixODBC 2.3.0 版本起,该选项的默认值已变为 no。
注意:
上面是deepseek给出的。
我实际上使用的是:
cpp
./configure --prefix=/usr/local/unixodbc
--sysconfdir=/etc \
--enable-gui=no \
--enable-drivers=no
这里又有一个坑,我之前编译的电脑上使用的是/usr/local/unixodbc
但这次deepseek给出的路径是/usr/local/unixODBC
然后我使用isql访问达梦,就不可以了。
说明unixODBC和unixodbc是不一样的。这个系统是区分大小写的。
银河麒麟系统是区分大小写的吗?银河麒麟(Kylin OS)本质上是 Linux 发行版 ,因此它的默认行为与主流 Linux 一致:区分大小写。
为了修改目录unixODBC为unixodbc需要首先修改目录权限
chmod 777 目录
只可以修改该目录的权限
chmod -R 777 目录名
这样可以递归修改该目录
编译与安装
cpp
# 编译(使用多核加速)
make -j$(nproc)
# 安装(可能需要 root 权限)
sudo make install
安装完成后

库文件会复制到 [prefix]/lib
可执行文件在 [prefix]/bin
配置环境变量
为了让系统能够找到 unixODBC 的命令和库,需要配置环境变量。
cpp
sudo vim /etc/profile
export DM_HOME=/home/admin123/dmdbms
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
export PATH=$PATH:$DM_HOME/bin
sudo vim ~/.bashrc
# 达梦数据库核心环境变量
export DM_HOME=/home/admin123/dmdbms
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/unixodbc/lib
export PATH=$PATH:$HOME/bin:$DM_HOME/bin:/usr/local/unixodbc/bin
# ODBC 配置
export ODBCINI=/usr/local/unixodbc/etc/odbc.ini
export ODBCSYSINI=/usr/local/unixodbc/etc

然后使配置生效:
cpp
source ~/.bash_profile
使用unixobdc访问达梦数据库
配置驱动和数据源
配置主要涉及两个文件:odbcinst.ini(驱动注册)和 odbc.ini(数据源定义)。具体路径可以通过命令 odbcinst -j 查看。


odbc.ini
cpp
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = 127.0.0.1
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
odbcinst.ini
cpp
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /home/admin123/dmdbms/bin/libdodbc.so
使用isql访问达梦数据库


使用达梦数据库的工具来访问达梦数据库
disql 是达梦数据库自带的命令行交互式客户端工具,类似于 Oracle 的 SQL*Plus,适合在无图形界面的服务器上使用。
cpp
# 基本连接语法:./disql 用户名/密码@主机:端口
./disql SYSDBA/SYSDBA@127.0.0.1:5236
如果数据库使用的是默认端口 5236,可以省略端口号
还有个问题,我这些都配置好了,可以使用isql和disql访问达梦数据库
但是我使用QtCreator访问:
数据库打开失败: "unixODBCDriver ManagerCan't open lib 'DM8 ODBC DRIVER' : file not found QODBC3: 不能连接"
但是我的Qt程序如果是通过命令行运行,就可以访问达梦数据库,如果是通过QtCreator启用,就无法访问达梦数据库。
方案一:在Qt Creator项目设置中直接添加环境变量(最推荐)
我就是用的这种方案,在我原来的电脑上可以,现在新电脑不行了。
方案二:从终端启动Qt Creator(最简单的临时方案)
这个可以
方案三:修改Qt Creator的启动方式(一劳永逸的系统级方案)
找到Qt Creator的 .desktop 文件
通常位于 ~/.local/share/applications/org.qt-project.qtcreator.desktop
或 /usr/share/applications/qtcreator.desktop。
使用文本编辑器打开它(可能需要 sudo 权限)。
找到 Exec= 开头的那一行,将其修改为通过 bash -ic 来启动,从而加载你的shell配置
cpp
# 修改前
Exec="/opt/Qt5.14.2/Tools/QtCreator/bin/qtcreator" %F
# 修改后
Exec=bash -ic "/opt/Qt5.14.2/Tools/QtCreator/bin/qtcreator" %F
保存文件后,注销并重新登录(或重启电脑),使修改生效
这个方案也可以