0

テストケースを実行するために使用swi-prologしています。テストが開始されるたびに、接続を開いてMYSQL databaseテストハットの名前を保存し、DB を閉じます。これらのテストは、約 2 日間連続して実行されます。テストが完了すると、結果は基本的にサーバーのフォルダーに保存されます。結果を MYSQL データベースに更新するために呼び出される別のプロローグ ファイルに述語があります。コードは単純です。odbcライブラリを使用し、述語を呼び出しodbc_*て接続し、直接クエリを発行して mysql を更新するだけです。

実際の問題は次のとおりです。

  1. テストが完了したばかりの同じ Prolog ウィンドウから Predicate を呼び出そうとすると、DB サーバーへの更新としてエラーが発生します。接続にエラーはありませんが。そのプロローグのセッションをhalt閉じて、開いているすべてのプロローグ ウィンドウを閉じると、Prolog の別の完全な新しいインスタンスを開き、述語を実行すると更新がうまくいきます。

Prolog データベースに MySQL DB への接続参照があるような気がします。既存のプロローグ ウィンドウを閉じずに同じ述語を実行できるように、プロローグでデータベースをクリアする方法はありますか?

どんなアイデアでも大歓迎です。

ありがとう。

4

1 に答える 1

1

接続を開くと、長い処理を行うよりも、MySQL が特定のタイムアウト後に接続をドロップする可能性があります (これは で構成できると思いますmy.cnf)。

編集: swi-prolog には、odbc_disconnect使用後に接続を明示的に閉じるために使用できる と、使用時に以前に開いた接続を取得するために使用できる「エイリアス」モードがありますodbc_open。あなたの場合は、使用後に接続を閉じるかを試すことができます。また、開くときにエイリアスを使用しないようにする必要があります。

于 2010-03-20T13:53:27.577 に答える