0

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

实际问题是:

  1. 如果我尝试从刚刚完成测试的同一个 Prolog 窗口调用谓词,则会在更新到数据库服务器时收到错误消息。虽然我在连接中没有收到任何错误。如果我关闭该 prolog 的会话halt并关闭所有打开的 prolog windows ,然后打开另一个完整的 Prolog 新实例并运行谓词更新顺利。

我感觉 Prolog 数据库中有一些对 MySQL DB 的连接引用。有什么方法可以清除 prolog 中的数据库,以便我可以在不关闭任何现有 prolog 窗口的情况下运行相同的谓词?

任何想法表示赞赏。

谢谢。

4

1 回答 1

1

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

编辑:swi-prolog 有一个odbc_disconnect可用于在使用后显式关闭连接的“别名”模式,可用于在使用odbc_open. 在您的情况下,您可以尝试在使用后关闭连接。您还应该避免在打开时使用别名。

于 2010-03-20T13:53:27.577 回答