我们正在使用swi-prolog
来运行我们的测试用例。每当测试开始时,我打开与MYSQL database
的连接并存储测试帽的名称,然后关闭数据库。这些测试连续运行约2天。测试完成后,结果基本上存储在服务器的文件夹中。在另一个prolog文件中有一个谓词,用于将结果更新到MYSQL数据库。代码很简单,我使用odbc
库,只需调用odbc_*
谓词通过发出直接查询来连接和更新mysql。
实际问题是:
halt
关闭该序言的会话并关闭所有打开的prolog窗口,那么打开另一个完整的Prolog新实例并运行谓词,更新顺利。 我觉得Prolog数据库中有一些MySQL DB的连接参考。有没有办法清除prolog中的数据库,以便我可以在不关闭任何现有的prolog窗口的情况下运行相同的谓词?
任何想法都赞赏。
感谢。
答案 0 :(得分:1)
如果你打开连接,而不是长时间处理,MySQL可以在一定的超时(我相信可以在my.cnf
中配置)之后断开连接。
编辑:swi-prolog有odbc_disconnect
可用于在使用后显式关闭连接,以及“别名”模式,可用于在使用odbc_open
时获取先前打开的连接。在这种情况下,您可以尝试在使用后关闭连接。打开时也应该避免使用别名。