刷新SWI-Prolog中的数据库缓存

时间:2010-03-20 10:41:22

标签: mysql swi-prolog

我们正在使用swi-prolog来运行我们的测试用例。每当测试开始时,我打开与MYSQL database的连接并存储测试帽的名称,然后关闭数据库。这些测试连续运行约2天。测试完成后,结果基本上存储在服务器的文件夹中。在另一个prolog文件中有一个谓词,用于将结果更新到MYSQL数据库。代码很简单,我使用odbc库,只需调用odbc_*谓词通过发出直接查询来连接和更新mysql。

实际问题是:

  1. 如果我尝试从相同的Prolog窗口调用Predicate,那么测试刚刚完成,我在更新到DB服务器时收到错误。虽然我没有在连接中得到任何错误。如果我用halt关闭该序言的会话并关闭所有打开的prolog窗口,那么打开另一个完整的Prolog新实例并运行谓词,更新顺利。
  2. 我觉得Prolog数据库中有一些MySQL DB的连接参考。有没有办法清除prolog中的数据库,以便我可以在不关闭任何现有的prolog窗口的情况下运行相同的谓词?

    任何想法都赞赏。

    感谢。

1 个答案:

答案 0 :(得分:1)

如果你打开连接,而不是长时间处理,MySQL可以在一定的超时(我相信可以在my.cnf中配置)之后断开连接。

编辑:swi-prolog有odbc_disconnect可用于在使用后显式关闭连接,以及“别名”模式,可用于在使用odbc_open时获取先前打开的连接。在这种情况下,您可以尝试在使用后关闭连接。打开时也应该避免使用别名。

相关问题