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

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配置MySQL数据库 && ninja: build stopped: subcommand failed_第1张图片
然后将编译文件拷贝到对应的路径下面
QT配置MySQL数据库 && ninja: build stopped: subcommand failed_第2张图片
QT配置MySQL数据库 && ninja: build stopped: subcommand failed_第3张图片
然后开始验证:
新建一个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和下方的MYSQL数据库配置信息(有空格也不要紧)才能引入SQL相关的头文件。

INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 8.0\include"
LIBS += "C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.lib"

然后再主程序进行执行改代码,成功之后就会显示成功的弹窗:
QT配置MySQL数据库 && ninja: build stopped: subcommand failed_第4张图片
错误的话就会显示错误信息,根据错误信息在进行处理。

你可能感兴趣的:(C++学习笔记,数据库,qt,mysql,c++)