У нас есть приложение, хранящее данные в локальной базе данных H2 (файловый режим).Все работает отлично, за исключением одного запроса, который выполняется при завершении работы приложения.Запрос передается в H2, но никогда не возвращается (исключение не выдается).
Насколько я знаю, это появляется только на одной рабочей станции (функция все еще в тесте, а не в производстве).
При использовании базы данных этой рабочей станции на моей собственной рабочей станции приложение сразу же останавливается в ожидании возврата запроса.Таким образом, с этой конкретной базой данных она воспроизводима.
При открытии базы данных с помощью внешнего инструмента ( DbVisualizer Pro , если это имеет значение) и выдаче того же запроса (в частности, я использовал explain analyze <query>
дляне изменяйте данные в базе данных) этот запрос также выполняется вечно.Запрос выглядит следующим образом:
DELETE TOP(1000) FROM my_schema.SOMETABLE ST WHERE ST.someDate < '2019-05-23'
Проблема не связана напрямую с показанной датой, поскольку она произошла в тот же день вчера (где дата была 2019-05-22
).
Странная вещь, когда я прекращаю выполнение запроса и изменяю дату, запрос будет работать должным образом (также с explain analyze
, поэтому данные не изменяются).Если я вернусь к исходной дате, она тоже будет работать.
Когда после этого «трюка» я запускаю приложение, рассматриваемый запрос работает как чудо.Так что я думаю, что это как-то связано с фактическим состоянием конкретной базы данных.
Мой вопрос: Как узнать, что не так с файлом базы данных?
Я уже пытался сделать это «проверка работоспособности» , но это не выявило проблем.
Примечание: «Запуск навсегда» здесь означает, что я остановил процесс приложения после ожидания некоторых20 минут, но я полагаю, что времени будет достаточно для удаления 16 из 18 записей в этой конкретной таблице.