中标麒麟+QT+达梦数据库
环境版本说明中标麒麟的安装达梦数据库的安装和连接一、创建安装用户、组(root下操作)二、新建安装数据库的文件(root下操作)三、挂载ISO文件(root下操作)四、安装数据库五、创建实例六、使用unixODBC连接达梦数据库七、Qt通过unixODBC连接数据库数据库安装和连接过程中可能会出现的问题一、错误信息输出方式二、socket未连接(网络通信异常)三、Can't open lib '/dm7/bin/libdodbc.so' : file not foundManger工具一些基础操作对现有表操作流程如下:新建一个表空间资料参考最后环境版本说明
背景:项目需要开发一个单机应用程序
操作系统:中标麒麟操作系统(兆芯版)
数据库:达梦数据库V7
开发工具:Qt Creator
开发技术:Qt开发框架、C++
中标麒麟的安装
在虚拟机安装中标麒麟,操作步骤跟一般步骤一样,需要注意的点有两个:
1.在选择运行内存大小时,将运行内存大小提高至3G(后面安装达梦数据库时会用到)。
2.在系统安装向导中,记得勾选同时安装SDK工具,这样就会把编程工具一起安装好。
安装好后重启虚拟机即可。
达梦数据库的安装和连接
一、创建安装用户、组(root下操作)
达梦官方建议新建本地用户来安装数据库,目的是减少对操作系统的影响。
1.创建一个名为dinstall的组
groupadd dinstall
2.建立一个名为dmdba的用户
useradd -g dinstall dmdba
3.设置用户dmdba的密码
passwd dmdba
二、新建安装数据库的文件(root下操作)
1.新建名为dm7的文件,此时若命令的目录处于桌面的话([root@localhost 桌面]),那dm7会在我的电脑–>本地磁盘中生成。
mkdir /dm7
2.设置拥有dm7的用户,将dm7的拥有者指定为dinstall组下的dmdba用户。
chown dmdba:dinstall -R /dm7
三、挂载ISO文件(root下操作)
使用命令:mount iso文件路径 要挂载的文件路径。以下面为例,iso文件放置在桌面,命令头处于[root@localhost 桌面]状态。
mount -o loop dm7__x86_rh6_64_ent_7.6.1.66.iso /mnt
挂载成功后会提示:mount:/dev/loop0写保护,将以只读的方式挂载。
四、安装数据库
直接在当前用户界面,通过终端切换成dmdba进入mnt文件执行DMInstall.bin会提示图形化界面安装失败,可以有如下两种方式处理:
1.在root下执行命令:
xhost +
再执行如下2的命令。
2.通过虚拟机切换到dmdba用户界面,再执行命令:
[dmdba@localhost mnt]./DMInstall.bin
3.在安装过程中可能会提示你一次打开文件数量不足,此时可以通过进入limits.conf文件进行修改,在root下进行。
vim /etc/security/limits.conf
再依次点击i进入insert模式、在文档最后添加如下信息:
* soft nofile 4096* hard nofile 65536* soft nproc 4096* hard nproc 65536
添加完成后保存退出,并reboot重启服务。
4.安装过程中,选择/dm7目录,安装完成后在root下执行指定代码启动数据库服务。
注:在dmdba用户下默认地址是/home/dmdba/dmdbms,在root下则为/opt/dmdbms。
五、创建实例
上述操作完成之后,会自动弹出初始化达梦数据库实例运行界面。按操作完成即可,也可以到/dm7的tool文件夹下的dbca.sh运行创建实例界面。一切基本默认就可以。
初始端口默认是5236,这个要记得,连接数据库时需要它。
创建完实例后需要在root下执行如下三条命令。(系统会有提示)
安装完成后,在/dm7目录下的tool文件夹就可以找到常用的客户端管理工具。最常用的有如下几种:
1.管理工具 Manager:用于管理用户、模式、表空间等。
2.实例创建 dbca.sh:用于创建实例。
3.服务管理dmservice:用于管理实例运行状态。
此外还需检查dmdba下.bash_profile中有关路径配置是否正确,如有问题,则自己添加,正确的路径显示应该如下:
六、使用unixODBC连接达梦数据库
1.达梦数据库在安装的时候都默认安装ODBC驱动,可以通过命令:
odbcisnt -j
查看是否安装,如果出现如下图所示情况,则说明安装完成。
注:有时候etc目录下并不存在odbc.ini,新建一个貌似不会影响,这里我也搞不太懂,希望有人能指点一下。
2.接下来对odbcinst.ini和odbc.ini这两个文件进行编辑(在root下进行)。
在odbcinst.ini中添加如下红框代码:
在odbc.ini中添加如下红框代码:
注:其中odbc.ini的Driver(DM7 ODBC DRIVER)与odbcinst.ini的开头[DM7 ODBC DRIVER]保持一致。Odbcinst.ini中的Driver指向数据库安装目录中的libdodbc.so。odbc.ini中的UID,PWD指向实例用户及其密码一般用SYSDBA即可,TCP_PORT则指向端口。
3.测试,在终端输入:isql DM7
这里就表示连接成功。
七、Qt通过unixODBC连接数据库
1.由上述步骤可知:我们数据库安装路径只在dmdba用户下设置过(第五最后处),因此Qt项目只有在dmdba用户的界面下创建才可以正常连接到数据库,若要在其他本地用户界面连接数据库,则可以参考第五最后对于dmdba用户.bash_profile的设置,对自己想要修改的用户进行路径修改,修改后使用命令:
source .bash_profile
使配置生效,更保险的可以再重新启动一下。
2.代码连接实例
在pro文件添加sql后那一行代码应该为:
QT +=core gui sql
#include "mainwindow.h"#include <QApplication>#include <QSqlDatabase>#include <QDebug>#include<QSqlError>int main(int argc, char *argv[]){// QApplication a(argc, argv);// MainWindow w;// w.show();// return a.exec();QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");//固定二选一db.setDatabaseName("DM7");//跟odbc.ini文件中的头保持一致[DM7]db.setPort(5236);//端口db.setHostName("localhost");//本地的用localhostdb.setUserName("SYSDBA");//用户名db.setPassword("SYSDBA");//我使用的是默认口令if(db.open()){qDebug()<<"connnect right";db.close();return true;}else{qDebug()<<db.lastError();return false;}}
连接成功后输出”connect right“。
数据库安装和连接过程中可能会出现的问题
由于之前测试的时候很多错误信息都没有截图保留下来,因此在下面介绍时只提一些错误的关键词。
一、错误信息输出方式
1.在连接用终端进行unixODBC连接测试时,可以使用-V来打印出错误信息:
isql -V DM7
2.在用Qt连接程序时,输出连接错误信息的话可以通过lastError()函数,具体实现可以见上述Qt连接实例。
下面就开始介绍常见的错误类型及解决方式
二、socket未连接(网络通信异常)
socket未连接这个是很常见的一个错误,也是比较容易解决的错误,一般出现这个问题可以从如下几个方面查找问题:
1.检查输入口令是否正确。
2.使用dmservice.sh工具检查数据库实例是否启动,是否创建。
(1)如果实例不存在,则可以通过dbca.sh工具创建实例。
(2)若发现dmservice.sh中数据库实例未启动,则可以通过终端在root下启动dmservice.sh再手动启动数据库实例(用鼠标点击打开dmservice.sh的话,在启动的时候会提示用root来启动)。一般情况下启动两个即可。
3.检查防火墙状态
防火墙状态查看可以使用如下命令:
systemctl status firewalld
一般情况下,本地连接数据库是不会出现因为防火墙导致的错误。这种错误常见在连接在服务器的数据库。
临时关闭防火墙可以使用如下命令:
systenctl stop firewalld
三、Can’t open lib ‘/dm7/bin/libdodbc.so’ : file not found
这个错误出现频率是最高的,只要是配置文件出错,或者是配置文件不生效,都会出现这个错误。记住这个错误,最最最主要原因还是要回归到配置文件。
1.配置文件.bash_profile不生效。
明确自己是在那个用户下开发Qt程序,如果你是在dmdba下就配置dmdba的.bash_profile,在其他用户下开发就配置其他用户的.bash_profile并使其生效。
上面是我在ljr用户上的配置,其实跟在dmdba上的配置一样。一开始我就是没想到这个,以为只要在dmdba上配置.bash_profile就可以所有用户通用。希望后来小白能注意到这个点,避开这个坑。
配置完成后使用命令:
source .bash_profile
2.odbc.ini和odbcinst.ini设置有问题
这个会出现问题一般都是没有两个名字没有对应起来。具体见上述配置步骤。
Manger工具一些基础操作
在创建数据库实例时,最好选择同时安装两个已有的案例,BOOKSHOP,DMHR,后面可以做一些实验。
对现有表操作流程如下:
新建一个表空间
个人理解表空间可以看成类似mysql数据库中我们创建的数据库存放数据的空间,表空间文件后缀名为.DBF,安装时我们选择的安放表空间数据库文件为DAMENG
1.新建表空间。在表空间处右键–>新建表空间。
2.新建管理用户。赋予权限和管理的表空间,之后会在模式上生成对应的模式。
用户命名会生成对应模式,且名字相同。这里我命名为TESTDB
3.在模式下新建表。设置完表属性后可以直接在右边表中直接录入数据。
资料参考
达梦数据库官方哔哩哔哩链接
达梦数据库官方文档和软件下载链接
达梦数据库官方讨论社区
讨论3群号:113992625 群里人都挺热心。
最后
本博客来自本人这阵子安装数据库和连接碰到的问题的总结,如果缺失或错漏欢迎大家在评论区或私信我指正,希望这篇博客能对跟我一样初入坑的小白能有所帮助。