无法从 hsqldb 日志文件恢复
Posted
技术标签:
【中文标题】无法从 hsqldb 日志文件恢复【英文标题】:No recovery from hsqldb log-file 【发布时间】:2016-03-17 21:58:59 【问题描述】:我有一个基于 Java/JSP/Hsqldb/Tomcat/Maven 的小型 Web 应用程序以及 Hsqldb 的以下问题:
目前我在应用程序中没有调用shutdown
或checkpoint
,所以提交的sql语句只插入到Hsqldb的.log文件中.
当我想轻松测试应用程序的更新时,我通过将 war 文件替换为 tomcat 的 webapps 文件夹中较新的文件来实现。登录到我的 Web 应用程序后,从数据库中显示的数据不完整/旧,因为 .log 文件中的 sql 语句被忽略。 Hsqldb 的文档告诉如果发生崩溃,.log 文件内容的重播会自动完成,但在我的情况下并非如此。
对我来说处理这种这种崩溃的最佳方法是什么?
在每个commit
之后或至少定期调用checkpoint
?
使用连接参数hsqldb.full_log_replay=true
?
还有其他想法吗?
感谢您的指导。
【问题讨论】:
【参考方案1】:首先,您必须将 WRITE DELAY 设置为 0 或低值。这可确保实际记录数据更改。检查 .script 文件的当前设置。
定期调用 CHECKPOINT 很好,但不是在每次提交之后。
为确保播放,请使用hsqldb.full_log_replay=true
。如果打开数据库时出现错误,请检查 .log 文件。如果某些行没有完全写出,则会出现错误。
【讨论】:
写入延迟不是我的重点,因为我目前是该应用程序的唯一用户,默认延迟为 500 毫秒。其他方面有帮助。以上是关于无法从 hsqldb 日志文件恢复的主要内容,如果未能解决你的问题,请参考以下文章