在 Ubuntu 環境下使用 Qt 開發連接 MySQL 的應用,需完成 MySQL 服務端安裝、Qt MySQL 驅動部署、項目配置三大步驟。本文基於 Ubuntu 10.04 + Qt SDK 1.5G 完整包 + MySQL 5.1 實測整理。
# 推薦:軟件中心搜索 mysql,勾選 mysql-server 和 mysql-client
# 或命令行:
sudo apt-get update
sudo apt-get install mysql-server mysql-client
安裝過程會提示設置 root 密碼,請記住。
# 以 root 登錄
mysql -uroot -p
# 創建普通用戶(避免直接用 root 開發)
GRANT ALL PRIVILEGES ON *.* TO 'devuser'@'localhost' IDENTIFIED BY 'devpass';
FLUSH PRIVILEGES;
# 創建測試庫
CREATE DATABASE study DEFAULT CHARSET utf8mb4;
Qt 連接 MySQL 需要 libqsqlmysql.so 插件,三種獲取方式:
sudo apt-get install libqt4-sql-mysql
# 將驅動複製到 Qt SDK 插件目錄
cp /usr/lib/qt4/plugins/sqldrivers/libqsqlmysql.so \
~/QtSDK/Desktop/Qt/4.7.3/gcc/plugins/sqldrivers/
apt-get download libqt4-sql-mysql
dpkg -x libqt4-sql-mysql_*.deb /tmp/extract
cp /tmp/extract/usr/lib/qt4/plugins/sqldrivers/libqsqlmysql.so \
~/QtSDK/Desktop/Qt/4.7.3/gcc/plugins/sqldrivers/
略過。
# 在 Qt Creator 中運行簡單測試代碼,或命令行:
LD_LIBRARY_PATH=~/QtSDK/Desktop/Qt/4.7.3/gcc/lib \
~/QtSDK/Desktop/Qt/4.7.3/gcc/plugins/sqldrivers/libqsqlmysql.so
# 無報錯即可用
QT += core sql
# 若無 GUI 界面
# QT -= gui
#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("study");
db.setUserName("devuser");
db.setPassword("devpass");
if (!db.open()) {
qDebug() << "Unable to open database:" << db.lastError().text();
return -1;
} else {
qDebug() << "Database connection established!";
}
return a.exec();
}
| 錯誤現象 | 原因 | 解決 |
|---|---|---|
QSqlDatabase: QMYSQL driver not loaded | 驅動文件缺失或依賴庫缺失 | 檢查 libqsqlmysql.so 存在;ldd libqsqlmysql.so 確認 libmysqlclient.so 可用 |
Cannot connect to MySQL server | MySQL 未啟動/端口/權限 | service mysql status;確認用戶 @localhost 權限 |
| 亂碼 | 字符集不匹配 | 連接後執行 SET NAMES utf8mb4 或庫表統一 utf8mb4 |
Qt 5+ 推薦驅動名稱 QMYSQL 同樣有效,若編譯 Qt5 從源碼需確保 -sql-mysql 選項開啟。
核心提示:驅動文件必須放在 Qt 運行時的 plugins/sqldrivers 目錄,而非系統 Qt 目錄;開發機與部署機環境需一致。