2017-04-26 3 views
0

データベースでソースコマンドを実行すると、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"; 
} 

作品が、私は構文エラーがないこのコード:

をあなたは あなたのSQL構文でエラーが発生しています。ライン1 QMYSQLに近い「ソース ./folder/myFile.sql」を使用する権利構文については、ご使用のMariaDB サーバーのバージョンに対応するマニュアルを確認してください。クエリ

を実行することができません。これは、コードです:

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()); 

。クエリ

を実行することができません:私は選択を実行した場合

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

しかし、私は後にこのコードジュストを実行した場合でも、私はエラー

ノーデータベース選択QMYSQLを持っていません*シェルのMyTableから、それは動作します。私はmysqlのログインシェルでこれを実行した場合

また、それは動作します:あなたが実行することはできませんので

source myFile.sql 
+0

「lQueryResult.LastError()」にはどのエラーがありますか? –

+0

Justeが質問を更新しました。 – Anonyme

答えて

1

SOURCEが、それはないMySQLサーバによって、MySQLのシェルによって実行されることを意味MySQL client commandですそれはQSqlQuery経由です。この問題を回避するには、ファイル全体を読み込んで、その内容をサーバーに送信します。

+0

OK! QSqlQueryを返すコマンドを実行して、.sqlダンプを使用してデータベースをバックアップすることはできますか?なぜ私はソースコマンドの後にselectを実行すると、テーブルが準備できていないのでしょうか?しかし、私がシェルで行うなら、それは大丈夫です。 – Anonyme

+0

私が書きましたように: 'SOURCE'を実行する代わりに、そのファイルからコマンドを読んで直接実行してください。 –

関連する問題