QT配置MySQL数据库 && ninja: build stopped: subcommand failed

2023-09-22 09:35:25

QT配置MySQL数据库

我当前的软件版本:QT Creator 10.0.2 (community)MingW 6.4.3 (QT6)MySQL 8.0

MySQL不配置支持的数据库有QList("QSQLITE", "QODBC", "QPSQL"),这个时候是不支持MYSQL数据库的,所以需要进行配置。通常老版本的QT配置是通过修改QT提供的源文件mysql.pro进行重新编译,可以参考QT - QT5.14.2 连接并操作MySQL8.0。对于新版本的QT并不存在mysql.pro文件,只有CMakeLists.txt文件,所以可以参考qt6.5.0MySQL驱动手动编译以及数据库连接详细教程以及注意事项附资源链接。按照这个教程进行执行到更改.cmake.conf的时候,可以看见需要配置MYSQL的路径,这里就会很容易出现问题。按照源作者的代码:

SET(FEATURE_sql_mysql ON)
SET(MySQL_INCLUDE_DIR "刚才复制的include文件夹路径/include")
SET(MySQL_LIBRARY "刚才复制的lib文件夹/lib/libmysql.lib")

有时我们在安装MYSQL就直接按照默认路径开始安装,所以MYSQL的路径在C:\Program Files\MySQL\MySQL Server 8.0这个目录下,所以路径中又存在中文,又有空格存在,如果正常执行下去,那么在项目构建的时候就会出现ninja: build stopped: subcommand failed,这个错误。找遍全网,没有明确解决方案,看见一个博主说是路径访问权限出现问题(没有C盘文件权限),所以考虑到QT编译的时候只需要includelib文件夹下的文件,所以能不能直接拷贝出来,放到一个目录下进行编译。我们将MYSQL的includelib文件夹拷贝到一个新文件夹中,现在的路径中没有空格也不再C盘。然后修改.cmake.conf对应的值。进行重新编译,就不会再出现错误了。

然后将编译文件拷贝到对应的路径下面


然后开始验证:
新建一个QT项目,在项目中加上以下代码,(需要根据自己的情况进行配置密码等):

bool MainWindow::createConnection()
{
    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");//添加一个默认连接,数据库驱动为QMYSQL
    //设置主机名有两种方式
    //    db.setHostName("127.0.0.1");//设置主机名,从MySQL的Workbench中查看
    db.setHostName("localhost");//设置主机名,从MySQL的Workbench中查看
    db.setPort(3306);//设置端口
    db.setDatabaseName("chat");//设置数据库名(这个数据库必须是已经存在的数据库)
    db.setUserName("root");//设置用户名
    db.setPassword("xiehou");//设置密码(你自己的密码)
    if(!db.open())
    {
        QMessageBox::critical(0,"Cannot open database",
                              "Unable to establish a database connection.",QMessageBox::Cancel);//提示出错
        qDebug()<<db.lastError().text();//输出错误信息
        return false;
    }
    else
    {
        QMessageBox::information(0,"Successfully","Establish a database connection",QMessageBox::Ok);//提示成功
    }
    return true;
}

另外需要在pro配置文件加上QT += sql才能引入SQL相关的头文件。
然后再主程序进行执行改代码,成功之后就会显示成功的弹窗:

错误的话就会显示错误信息,根据错误信息在进行处理。

更多推荐

【SpringCloud】微服务技术栈入门2 - Nacos框架与Feign

目录Nacos下载Nacos并运行配置NacosNacos集群Nacos负载均衡Nacos环境隔离Nacos注册细节Nacos更多配置项快速上手自动更新Feign取代RestTemplateFeign自定义配置性能优化Nacos下载Nacos并运行首先下载对应的release包,主要要选择已经打包编译好的nacos-s

MongoDB(二)基础操作 创建、删除等

mongodb有一个特点,如果某个库,库下面没数据(mongodb成集合),该库等于不存在的mongodb只要创建一个库,在库下写入数据,该库才会生成mongoshe[-h=host-p=xxx]创建数据库use数据库名#如果数据库名已经存在,则表示切换到这个数据库,如果没有,则创建,但不是持久化到磁盘,查看有权限查看

Linux的常见指令

目录pwd命令ls指令mkdir指令touch指令cd指令rmdir指令&&rm指令man指令nanocp指令mv指令cat指令more指令less指令head指令tail指令grep指令热键zip/unzip指令tar指令uname–r指令输出重定向图形化界面和命令行操作本质都是对操作系统进行直接或间接的操作pwd命

租用独立服务器有哪些常见的误区?

租用独立服务器有哪些常见的误区?如今,租用独立服务器的市场随着idc行业良好的发展趋势而变得越来越广泛,其最明显的地方在于出现了许多的代理商,而成为代理商的门槛非常低,这样一来就会出现许多问题,导致很多企业在面对层出不穷的代理商做选择时,都会非常困扰,因为租用服务器还存在后续使用的售后、机器的质量保障等等,不泛一些不良

Immutable.js简介

引子看一段大家熟悉的代码conststate={str:'wwming',obj:{y:1},arr:[1,2,3]}constnewState=stateconsole.log(newState===state)//truenewState和state是相等的原因:由于js的对象和数组都是引用类型。所以newStat

vue-cli安装与搭建SPA项目

文章目录一、VueCLI1.1脚手架1.2VueCLI1.3安装VueCLI二、用CLI完成spa项目的构建2.1使用脚手架创建项目骨架2.2“一问一答”模式2.3安装项目所需nmp2.4项目结构简介三、基于spa项目完成路由3.1自定义组件3.2创建路由集合3.3挂载四、嵌套路由4.1创建组件4.2创建路由集合4.3

插入/希尔/选择/堆/冒泡/快速/归并/计数排序 && 排序原理 && 搜索树原理 && 哈希概念

第1题(编程题)题目名称:插入排序和希尔排序题目内容://插入排序publicstaticvoidinsertSort(int[]array){//writecodehere}//希尔排序publicstaticvoidshellSort(int[]array){//writecodehere}第2题(编程题)题目名称

关于远程工作的面试可能存在的陷阱

附上看到的完整帖子地址:面试POPER的后端开发工程师的离奇经历分享一下我遇到过的,我至少面试过10个远程工作,其中有3个的面试是直接让我完成一个需求的,前两次都耐心做了,第3次看到相同要求时我都懒得回复了,直接视为白嫖了。可能很多企业会反驳你这只是测试,可这就是CRUD而已,能考验什么?对某个框架、库、SDK的使用熟

发布文章到wordpress

给朋友新建的wp网站,没有内容怎么办,总不能一篇篇的挨个写入吧。用wp提供的录入模块就可以了参考wp说明文档获取docx内容保存到wp资料有个docx文件,但文件格式混乱,好在有目录,可以基于目录,对文章分割,用正则拆分存入wp首先用pandoc把docx转为md文件,速度较慢,且没有进度展示,稍等pandoc-fdo

[maven] 使用 Nexus 管理 repository

[maven]使用Nexus管理repository大概是说还有一篇笔记,两篇内容,maven的内容就差不多过完了。这一篇笔记主要记一下maven的central管理部分,之前提到过我们公司用的就是nexux做了一个镜像,这里也会用docker去创建一个本地的nexus三合一的话内容就拆得太长了……所以这里nexus的

ARM64 SMP多核启动详解1(spin_table)

1.简介处理器架构:arm64uboot版本:uboot-2023内核源码:linux-5.10ubuntu版本:20.04.1一般嵌入式系统使用的都是对称多处理器(SymmetricMulti-Processor,SMP)系统,包含了多个cpu,这几个cpu都是相同的处理器,如4核Contex-A53。但是在系统启动

热文推荐