对于使用 H2 数据库的多线程应用程序,我们在日志中看到堆空间错误后立即出现以下错误:
java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:Java堆空间........ org.h2.jdbc.JdbcSQLException:读取记录时文件损坏:“[17806]流数据密钥:1922 pos:剩余 11 个:0”。可能的解决办法:使用恢复工具;SQL语句:更新键设置take=false,其中take=true [90030-155] at org.h2.message.DbException.getJdbcSQLException(DbException.java: 327) at 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.java) :226)在org.h2.index.PageDataLeaf.getNextPage(PageDataLeaf.java:391)在org.h2.index.PageDataCursor.nextRow(PageDataCursor.java:90)在org.h2.index.PageDataCursor.next(PageDataCursor。 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 更多
这是 H2 的已知问题吗?
此外,当我尝试使用恢复工具从损坏的数据库中恢复数据时,我只能恢复 10%。原始数据库大小为 1.6 GB,而恢复的数据库大小仅为 81 MB。我使用恢复工具将损坏数据库中的所有数据导出到 .sql 文件,然后通过针对 H2 数据库运行此脚本来重新创建数据库。我还缺少其他东西吗?
我有一个文件,我希望grep out所有不以时间戳开头的行.我尝试使用以下正则表达式,但它不起作用:
cat myFile | grep '^(?!\[0-9\]$).*$'
Run Code Online (Sandbox Code Playgroud)
在这里我可能做错的任何其他建议或事情?