我在数据库上执行源命令时遇到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>
答案 0 :(得分:1)
SOURCE
是MySQL client command,这意味着它由MySQL shell执行,而不是由MySQL服务器执行,因此您无法通过QSqlQuery
执行它。您可以通过阅读整个文件然后将其发送到服务器来解决此问题。