Мы используем swi-prolog
для запуска наших тестовых корпусов. Всякий раз, когда начинается тест, я открываю соединение с MYSQL database
и записывает имя тестовой шляпы, а затем закрывает БД. Эти испытания продолжаются в течение 2 дней непрерывно. После завершения тестов результаты в основном сохраняются в папке на сервере. В другом прологовом файле есть предикат, который вызывается для обновления результатов в базе данных MYSQL. Код прост, я использую библиотеку odbc
и просто вызываю odbc_*
предикаты для подключения и обновления mysql путем выдачи прямых запросов.очистка кэша базы данных в SWI-Prolog
Реальная проблема заключается в:
- Если я пытаюсь вызвать предикат из того же окна Пролога, где тест только что завершен, я получаю сообщение об ошибке, как обновление к серверу БД. Хотя я не получаю никаких ошибок в соединении. Если я закрою сеанс этого пролога с помощью
halt
и закрываю все открытые прологовые окна, тогда откройте другой полный новый экземпляр Prolog и запустите предикат, и обновление будет хорошо.
У меня возникло ощущение, что в базе данных Prolog имеется ссылка на соединение с MySQL DB. Есть ли способ очистить базу данных в прологе, чтобы я мог запускать один и тот же предикат, не закрывая никаких существующих окон пролога?
Любые идеи оценили.
Спасибо.
Я знаю это. Но я снова открываю соединение в предикате обновления. Но я не уверен, почему обновление не состоится. – JPro
Кажется, вы изменили свой вопрос, частично подтвердив мои подозреваемые в связи с отключением времени. Вы используете odbc_disconnect? В противном случае вы можете попробовать использовать odbc_current_connection, чтобы проверить свои соединения. Вы также должны проверить документацию odbc_connect на имя псевдонима соединения и «множественные» режимы открытия. – baol