QSqlQuery 的语法错误源

Syntaxe error source with QSqlQuery

当我在我的数据库上执行源命令时,QSqlQuery 出现问题。 此代码有效:

QString myRequest = "CREATE DATABASE MY_DATABASE;";
lQueryResult.Exec(myRequest);
if(!lQueryResult.GetMexec())
{
    qDebug() << "Error in the request";
    return false;
}
else
{
    qDebug() << "The request is OK";
}

此代码无效,我有一个语法错误:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'source ./folder/myFile.sql' at line 1 QMYSQL: Unable to execute query

这是代码:

myRequest = "source myFile.sql";
lQueryResult.Exec(myRequest);
if(!lQueryResult.GetMexec())
{
    qDebug() << "Error";
    qDebug() << lQueryResult.LastError();
    return false;
}
else
{
    qDebug() << "OK";
}

我可以使用此命令成功完成我的源代码:

QString lCommand("mysql -uUsername -pPassword Data_Base -e \"source " + variablePath + variableFile + ".sql\"");
        system(lCommandeProvisoire.toStdString().c_str());

我没有错误。但是,如果我在之后执行此代码,则会出现错误

No database selected QMYSQL: Unable to execute query

:

TheRequest = "SELECT * FROM MyTable;";
        QueryResult.Exec(TheRequest);
        if(!QueryResult.GetMexec())
        {
            qDebug() << QueryResult.LastError();
            return false;
        }
        else
        {
            qDebug() << "OK";
        }

但是,如果我在 shell 中从 MyTable 执行 select *,它会起作用。

此外,如果我在登录 mysql 的 shell 中执行此操作,它会起作用:

source myFile.sql

SOURCEMySQL client command 这意味着它是由 MySQL shell 执行的,而不是由 MySQL 服务器执行的,所以你不能通过QSqlQuery。您可以通过读取整个文件然后将其内容发送到服务器来解决此问题。