使用QSqlQuery的语法错误源

时间:2017-04-26 14:21:45

标签: c++ mysql database qt qsqlquery

我在数据库上执行源命令时遇到QSqlQuery问题。 此代码有效:

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

此代码不起作用,我有语法错误:

  

你有错误   你的SQL语法;查看与MariaDB对应的手册   服务器版本,用于在'source附近使用正确的语法   第1行的./folder/myFile.sql'QMYSQL:无法执行查询

这是代码:

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

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

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

我没有错误。但是,如果我之后执行此代码juste,我有错误

  

未选择数据库QMYSQL:无法执行查询

source myFile.sql

但是,如果我在shell中执行来自MyTable的select *,它就可以工作。

另外,如果我在一个登录mysql的shell中执行它,它可以工作:

<li {{ (Request::is('admin/users') ? 'class=active' : '') }}>
    <a href="{{ route('users') }}">
        Users
    </a>
</li>

1 个答案:

答案 0 :(得分:1)

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