0

コンソールに次のエラー メッセージが表示されます。

Unable to free statement: ERROR:  prepared statement "qpsqlpstmt_1" does not exist

アプリケーションで次の関数が呼び出されたとき (またはオブジェクトが削除されたとき (clear()削除前に呼び出されなかった場合) に出力されます)。

sqlQueryModel->clear();

sqlQueryModel オブジェクトは型QSqlQueryModelであり、PostgreSQL データベースと通信するために派生クラス全体で使用されます。のモデルにもなっていますQCompleter。名前を宣言したり使用したりしたことはありません"qpsqlpstmt_1"

誰かがエラーメッセージを解釈するのを手伝ってくれますか? これは私のコードまたは Qt のバグに問題があることを示していますか? (おそらく前者:))

サーバー上の PostgreSQL ログ ファイルを確認すると、まったく同じステートメントに加えて次の行が表示されます。

STATEMENT: DEALLOCATE pqsqlpstmt_1
4

2 に答える 2

1

これらの Qt イシュー トラッカー エントリを参照してください。

...すべて、準備されたステートメント名に言及し、削除に関連しています。

于 2012-10-15T01:41:33.930 に答える
0

かなりの時間が経過した後、clear を呼び出す前にデータベースへの接続を単に閉じていたことに気付きました... 良い戦略ではありません。

于 2013-03-26T17:02:35.747 に答える