我們使用swi-prolog
來運行我們的測試用例。每當測試開始時,我打開連接到MYSQL database
並存儲測試帽的名稱正在完成,然後關閉數據庫。這些測試持續運行約2天。測試完成後,結果基本上存儲在服務器的文件夾中。另一個prolog文件中有一個謂詞用於將結果更新到MYSQL數據庫。代碼很簡單,我使用odbc
庫,並調用odbc_*
謂詞來連接並通過發出直接查詢來更新mysql。在SWI-Prolog中刷新數據庫緩存
的實際問題是:
- 如果我嘗試從同一個Prolog的窗口,在這裏測試剛剛完成的呼叫謂語,我得到一個錯誤的更新到數據庫服務器。儘管我沒有在連接中出現任何錯誤。如果我關閉該序言的會議與
halt
並關閉所有打開的窗口序言,然後打開的Prolog的其他完整的新實例,並運行更新順利謂語。
我有一種感覺,有一些連接引用到Prolog數據庫中的MySQL數據庫。有沒有什麼方法可以在prolog中清除數據庫,這樣我就可以在不關閉任何現有的prolog窗口的情況下運行相同的謂詞?
任何想法讚賞。
謝謝。
我知道。但是我在更新謂詞中再次打開連接。但我不知道爲什麼更新沒有發生。 – JPro 2010-03-20 14:07:39
看來你已經改變了你的問題部分確認我了超時連接的犯罪嫌疑人。你使用odbc_disconnect嗎?否則,你應該嘗試使用odbc_current_connection來檢查你的連接。您也應該檢查odbc_connect的關於連接和「多」開放模式的別名文件。 – baol 2010-03-21 12:50:21