2016-07-08 12 views
0

Qtとsqliteに問題があります。私は(まったく同じ機能を使用して)テーブルを作成しようとしたときに最近まで、私は、今、何の問題もテーブルを作成を持っていますが、いなかった私は、エラーメッセージを取得:Qt Sqliteエラー1 - テーブルがすでに存在します

QSqlError("1", "Unable to fetch row", "table selections already exists") 

を次のように私のクエリ文字列は、次のとおりです。

CREATE TABLE external_files (path VARCHAR (255) NOT NULL, used INTEGER (12) NOT NULL); 

これも以前と同じです。

奇妙なことですが、すべてのテーブルは問題なく作成されますが、まだエラーメッセージが表示されます。

なぜこのようなことが起こるか知っていれば、私はそれを感謝します。 :)

UPDATE:最小、完全、検証可能な例:事前に

#include <QCoreApplication> 
#include <QSqlDatabase> 
#include <QSqlQuery> 
#include <QSqlError> 
#include <QFile> 
#include <QTextStream> 
#include <QDebug> 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "CONN"); 
    db.setDatabaseName("test.db"); 
    if(!db.open()){ 
     qDebug() << "Connection failed!"; 
    } 

    QFile tableListFile(":/resources/sql/tables.sql"); 
    if(tableListFile.open(QIODevice::ReadOnly)) 
    { 
     QTextStream stream(&tableListFile); 
     while(!stream.atEnd()) 
     { 
      QString queryString = stream.readLine(); 
      qDebug() << "Query string: " << queryString; 
      QSqlQuery query(queryString, db); 
      if(!query.exec()){ 
       qDebug() << "Query error: " << query.lastError(); 
      } 
     } 
    } 

    db.close(); 

    return a.exec(); 
} 

感謝。

+0

のデータベースは、「テーブル 'selections'がすでに存在している」、とテーブルがあり、なぜ、あなたは疑問がわかりますか? –

+0

これを実行する前にデータベースが空です。それはテーブルの選択を作成するが、私はこのエラーメッセージをとにかく得る。 – Flashcap20

+2

明らかに、データベースはCREATE TABLEステートメントの前に* not *空です。 –

答えて

0

私は問題を解決できました。 クエリはクエリ文字列ごとに2回実行され、エラーメッセージが発生しました。解決策に到達するために 、私はこのような私のコードを編集した:

QString queryString = stream.readLine(); 
qDebug() << "Query string: " << queryString; 
QSqlQuery query; 
if(!query.exec(queryString)){ 
    qDebug() << "Query error: " << query.lastError(); 
} 
関連する問題