我有一个基于Java / JSP / Hsqldb / Tomcat / Maven的小型Web应用程序以及Hsqldb的以下问题:
目前我还没有在应用程序中调用shutdown
或checkpoint
,因此提交的sql语句只会插入到 .log 文件中> HSQLDB
当我想轻松测试应用程序的更新时,我通过在tomcat的 webapps 文件夹中将war文件替换为较新的文件来实现。登录到我的Web应用程序后,数据库中显示的数据不完整/旧,因为 .log 文件中的sql语句将被忽略。 Hsqldb的文档告诉我,如果发生崩溃, .log 文件内容的重放会自动完成,但在我看来情况并非如此。
我处理此崩溃的最佳方式是什么?
checkpoint
或至少定期调用commit
?hsqldb.full_log_replay=true
?感谢您的指导。
答案 0 :(得分:1)
首先,您必须将WRITE DELAY设置为0或低值。这可确保实际记录数据更改。检查.script文件以获取当前设置。
定期调用CHECKPOINT是好的,但不是在每次提交后。
确保播放使用hsqldb.full_log_replay=true
。如果打开数据库时出错,请检查.log文件。如果某些行未完全写出,则会出现错误。