Ошибка H2 db 'Chunk no longer'

Когда я пытаюсь добавить новую строку в db "INSERT INTO invite_users VALUES ('id', user_name ')"

Я получаю эту ошибку:

General error: "java.lang.IllegalStateException: Chunk 2089 no longer exists [1.4.181/9]"

Вероятно, это некоторые проблемы с db, потому что когда я попытался добавить ту же строку в новую db-ошибку, исчезла.

Обновление 20 ноября 2014 года

Хорошие новости! Я связался с разработчиками H2 db и выяснил, что они исправят эту ошибку в следующей версии. https://groups.google.com/forum/#!topic/h2-database/i_GHXExjotc

Обновление 6 декабря 2014 года

Простым обходным решением является отключить MVStore, добавив "; mv_store = false" к URL-адресу базы данных.

Но, этот трюк не будет работать, если вам нужен старый db. Он создает новую базу данных с расширением .h2.db вместо .mv.db

Чтобы преодолеть этот, вам нужно создать SQL script вашей старой базы данных ".mv.db" (с помощью инструмента "Восстановить" ), а затем запустить этот script с помощью "...".

Ответ 1

В версии 1.4.182, вероятно, что-то не так с механизмом, который обнаруживает, когда фрагмент больше не ссылается. В настоящее время это reference counting сбор мусора: путем подсчета в реальном времени страниц и живого пространства. Если это достигает нуля, фрагмент может быть перезаписан через 45 секунд.

Простым решением является использование механизма хранения page store вместо mv_store путем изменения соединения с базой данных для использования mv_store=false в качестве смягчения.

Функция MV_STORE автоматически включается с версии 1.4.177 Beta.

По умолчанию параметр MV_STORE включен, поэтому он использует новый Хранилище MVStore. По умолчанию параметр MVCC установлен на те же значения как параметр MV_STORE, поэтому он также включен по умолчанию. Для тестирование, обе настройки можно отключить, добавив "; MV_STORE = FALSE" и/или "; MVCC = FALSE" в URL-адрес базы данных.