Для нашего многопоточного приложения, которое использует базу данных H2, мы увидели следующую ошибку в наших журналах сразу после ошибки кучи:
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:Пространство кучи Java ........ org.h2.jdbc.JdbcSQLException: файл поврежден при чтении записи: «[17806] ключ данных потока: 1922 позиции: 11 осталось: 0».Возможное решение: использовать инструмент восстановления;Оператор SQL: обновить ключи, заданные принято = ложно, где принято = истина [90030-155] в org.h2.message.DbException.getJdbcSQLException (DbException.java: 327) в org.h2.message.DbException.get (DbException.java:167) в org.h2.message.DbException.get (DbException.java:144) в org.h2.index.PageDataIndex.getPage (PageDataIndex.java:230) в org.h2.index.PageDataNode.getNextPage (PageDataNode.j: 226) в org.h2.index.PageDataLeaf.getNextPage (PageDataLeaf.java:391) в org.h2.index.PageDataCursor.nextRow (PageDataCursor.java:90) в org.h2.index.PageDataCursataCore (.java: 49) в org.h2.index.IndexCursor.next (IndexCursor.java:235) в org.h2.table.TableFilter.next (TableFilter.java:352) в org.h2.command.dml.Update.update(Update.java:89) в org.h2.command.CommandContainer.update (CommandContainer.java:71) в org.h2.command.Command.executeUpdate (Command.java:212) в org.h2.jdbc.JdbcStatement.executeUpdateInternal (JdbcStatement.java: 125) в org.h2.jdbc.JdbcStatement.executeUpdate (JdbcStatement.java:110)... 6 more
Это известная проблема с H2?
Кроме того, когда я пытался восстановить данные с помощью инструмента восстановления из поврежденной базы данных, я смог восстановить только10% от этого.Первоначальный размер БД составлял 1,6 ГБ, а размер восстановленной базы данных - всего 81 МБ.Я экспортировал все данные из поврежденной базы данных в файл .sql, используя инструмент восстановления, а затем заново создал базу данных, запустив этот сценарий для базы данных H2.Есть что-то еще, что мне не хватает?