linux(ubuntu18.04.2) Qt编译 MySQL(8.0以上版本)链接库 Qt版本 5.12.12及以上 包含Mysql动态库缺失问题

整理这篇文档的意义在于:自己走了很多弯路,淋过雨所以想为别人撑伞,也方便回顾,仅供参考

一、搭建开发环境:

  • 虚拟机(ubuntu-20.04.6-desktop-amd64):
  • Mysql数据库 8.0.36
  • Workbench (mysql-workbench-community_8.0.29-1ubuntu20.04_amd64.deb)
  • QT 5.12.12(qt-opensource-linux-x64-5.12.12.run)

其中,Mysql版本已经不支持8.0.29,在考察了兼容性之后,选择使用8.0.36:(不同版本地址
在这里插入图片描述

为了提升速度,需要先换源:源链接

二、QT - QT5.12.12 连接并操作MySQL8.0:

加粗样式搭建开发环境是对整体项目环境的一种了解手段,镜像资源丰富、难度不大,但非常浪费时间。

​我整理了网上比较靠谱的资料,我照着复现过一遍,文档整理如下:

1、数据库连接

在Qt5版本之后,常见的问题是动态库缺失,即mySql需要完成编译工作

情况分析:连接Mysql失败,实例化打印出来:

QStringList list = QSqlDatabase::drivers();
qDebug()<<list;

打印结果表示缺少Mysql动态库:在这里插入图片描述
我一开始的思路:

  • 不支持动态库了 5以上多个版本是不支持的,6以上全部不支持
  • 支持但安装时漏掉了

2、求助官方文档(文档链接):

原话如下:

How to Build the QMYSQL Plugin on Unix and macOS?

You need the MySQL / MariaDB header files, as well as the shared
library libmysqlclient.so / libmariadb.so. Depending on your Linux
distribution, you may need to install a package which is usually
called “mysql-devel” or “mariadb-devel”.

Tell qmake where to find
the MySQL / MariaDB header files and shared libraries (here it is
assumed that MySQL / MariaDB is installed in /usr/local) and run
make:

eg:

mkdir build-sqldrivers
cd build-sqldrivers
qt-cmake -G Ninja <qt_source_directory>/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>/<platform> -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.<so|dylib>"
cmake --build .
cmake --install .

难点:

  • 过往有简单的Cmake经验,通常是配置Cmakelists文件:我之前配置Cmake的心得,在这里没能完全理解文档的意思

  • 开始思路不清晰,不确定是整体库缺失,需要安装mysql-devel,还是单纯缺失libmysqlclient,需要单独下载。

最终的方法(实测没问题):

  1. 安装命令:sudo apt-get install libmysqlclient-dev

  2. 配置文件(主要标注的是需要改动的部分,其余内容不要修改):

    mysql.pro:

    #QMAKE_USE += mysql
    

    qsqldriverbase.pri:

    QT  = core core-private sql-private
    
    #include($$shadowed($$PWD)/qtsqldrivers-config.pri)
    include($$shadowed($$PWD)/configure.pri)
    
    PLUGIN_TYPE = sqldrivers
    load(qt_plugin)
    
    DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
    

    3、make生成动态库:libqsqlpsql.so

    4、拷贝移动到Qt的数据库驱动:sqldrivers中即可
    效果图如下:
    在这里插入图片描述
    在这里插入图片描述
    最终验证也是实现了想要的效果:
    在这里插入图片描述

总结

Qt连接到mysql的过程:app->Qt的数据库插件->mysql动态库->mysql服务

补充说明(Windows道理一样)

How to Build the QMYSQL Plugin on Windows

You need to get the MySQL installation files (e.g. mysql-installer-web-community-8.0.18.0.msi) or mariadb-connector-c-3.1.5-win64.msi. Run the installer, select custom installation and install the MySQL C Connector which matches your Qt installation (x86 or x64). After installation check that the needed files are there:

Win参考文档

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-30 06:20:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-30 06:20:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-30 06:20:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-30 06:20:03       20 阅读

热门阅读

  1. strcpy,strncpy函数详解

    2024-04-30 06:20:03       12 阅读
  2. vue 配合 video.js 实现视频播放

    2024-04-30 06:20:03       9 阅读
  3. 将后端返回的正则字符串转为正则对象

    2024-04-30 06:20:03       11 阅读
  4. MongoDB聚合运算符:$size

    2024-04-30 06:20:03       12 阅读
  5. Hadoop 伪分布式安装

    2024-04-30 06:20:03       11 阅读