我们使用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