中标麒麟+QT+达梦数据库
中標麒麟+QT+達夢數據庫
- 環境版本說明
- 中標麒麟的安裝
- 達夢數據庫的安裝和連接
- 一、創建安裝用戶、組(root下操作)
- 二、新建安裝數據庫的文件(root下操作)
- 三、掛載ISO文件(root下操作)
- 四、安裝數據庫
- 五、創建實例
- 六、使用unixODBC連接達夢數據庫
- 七、Qt通過unixODBC連接數據庫
- 數據庫安裝和連接過程中可能會出現的問題
- 一、錯誤信息輸出方式
- 二、socket未連接(網絡通信異常)
- 三、Can't open lib '/dm7/bin/libdodbc.so' : file not found
- Manger工具一些基礎操作
- 對現有表操作流程如下:
- 新建一個表空間
- 資料參考
- 最后
環境版本說明
背景:項目需要開發一個單機應用程序
操作系統:中標麒麟操作系統(兆芯版)
數據庫:達夢數據庫V7
開發工具:Qt Creator
開發技術:Qt開發框架、C++
中標麒麟的安裝
在虛擬機安裝中標麒麟,操作步驟跟一般步驟一樣,需要注意的點有兩個:
1.在選擇運行內存大小時,將運行內存大小提高至3G(后面安裝達夢數據庫時會用到)。
2.在系統安裝向導中,記得勾選同時安裝SDK工具,這樣就會把編程工具一起安裝好。
安裝好后重啟虛擬機即可。
達夢數據庫的安裝和連接
一、創建安裝用戶、組(root下操作)
達夢官方建議新建本地用戶來安裝數據庫,目的是減少對操作系統的影響。
1.創建一個名為dinstall的組
2.建立一個名為dmdba的用戶
useradd -g dinstall dmdba3.設置用戶dmdba的密碼
passwd dmdba二、新建安裝數據庫的文件(root下操作)
1.新建名為dm7的文件,此時若命令的目錄處于桌面的話([root@localhost 桌面]),那dm7會在我的電腦–>本地磁盤中生成。
mkdir /dm72.設置擁有dm7的用戶,將dm7的擁有者指定為dinstall組下的dmdba用戶。
chown dmdba:dinstall -R /dm7三、掛載ISO文件(root下操作)
使用命令:mount iso文件路徑 要掛載的文件路徑。以下面為例,iso文件放置在桌面,命令頭處于[root@localhost 桌面]狀態。
mount -o loop dm7_20200813_x86_rh6_64_ent_7.6.1.66.iso /mnt掛載成功后會提示:mount:/dev/loop0寫保護,將以只讀的方式掛載。
四、安裝數據庫
直接在當前用戶界面,通過終端切換成dmdba進入mnt文件執行DMInstall.bin會提示圖形化界面安裝失敗,可以有如下兩種方式處理:
1.在root下執行命令:
再執行如下2的命令。
2.通過虛擬機切換到dmdba用戶界面,再執行命令:
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后那一行代碼應該為:
連接成功后輸出”connect right“。
數據庫安裝和連接過程中可能會出現的問題
由于之前測試的時候很多錯誤信息都沒有截圖保留下來,因此在下面介紹時只提一些錯誤的關鍵詞。
一、錯誤信息輸出方式
1.在連接用終端進行unixODBC連接測試時,可以使用-V來打印出錯誤信息:
isql -V DM72.在用Qt連接程序時,輸出連接錯誤信息的話可以通過lastError()函數,具體實現可以見上述Qt連接實例。
下面就開始介紹常見的錯誤類型及解決方式
二、socket未連接(網絡通信異常)
socket未連接這個是很常見的一個錯誤,也是比較容易解決的錯誤,一般出現這個問題可以從如下幾個方面查找問題:
1.檢查輸入口令是否正確。
2.使用dmservice.sh工具檢查數據庫實例是否啟動,是否創建。
(1)如果實例不存在,則可以通過dbca.sh工具創建實例。
(2)若發現dmservice.sh中數據庫實例未啟動,則可以通過終端在root下啟動dmservice.sh再手動啟動數據庫實例(用鼠標點擊打開dmservice.sh的話,在啟動的時候會提示用root來啟動)。一般情況下啟動兩個即可。
3.檢查防火墻狀態
防火墻狀態查看可以使用如下命令:
一般情況下,本地連接數據庫是不會出現因為防火墻導致的錯誤。這種錯誤常見在連接在服務器的數據庫。
臨時關閉防火墻可以使用如下命令:
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_profile2.odbc.ini和odbcinst.ini設置有問題
這個會出現問題一般都是沒有兩個名字沒有對應起來。具體見上述配置步驟。
Manger工具一些基礎操作
在創建數據庫實例時,最好選擇同時安裝兩個已有的案例,BOOKSHOP,DMHR,后面可以做一些實驗。
對現有表操作流程如下:
新建一個表空間
個人理解表空間可以看成類似mysql數據庫中我們創建的數據庫存放數據的空間,表空間文件后綴名為.DBF,安裝時我們選擇的安放表空間數據庫文件為DAMENG
1.新建表空間。在表空間處右鍵–>新建表空間。
2.新建管理用戶。賦予權限和管理的表空間,之后會在模式上生成對應的模式。
用戶命名會生成對應模式,且名字相同。這里我命名為TESTDB
3.在模式下新建表。設置完表屬性后可以直接在右邊表中直接錄入數據。
資料參考
達夢數據庫官方嗶哩嗶哩鏈接
達夢數據庫官方文檔和軟件下載鏈接
達夢數據庫官方討論社區
討論3群號:113992625 群里人都挺熱心。
最后
本博客來自本人這陣子安裝數據庫和連接碰到的問題的總結,如果缺失或錯漏歡迎大家在評論區或私信我指正,希望這篇博客能對跟我一樣初入坑的小白能有所幫助。
總結
以上是生活随笔為你收集整理的中标麒麟+QT+达梦数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java学习四个月以来的想法
- 下一篇: mysql5.7导出数据提示--secu