Ошибка 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-адрес базы данных.