我的情况是我的HSQL数据库已停止工作,因为它已超出大小限制
org.hsqldb.HsqlException: error in script file line: 41 file input/output errorerror org.hsqldb.HsqlException: wrong database file version: requires large database support opening file - file hsql/mydb.data;
当我使用“du -sh”检查数据文件的大小时,它只有大约730MB,但当我执行“ls -alh”时,它给了我一个令人震惊的16G大小,这解释了为什么HSQL可能会报告为一个'大型数据库'。所以,数据文件似乎是一个“稀疏文件”
但是,没有人确实将数据文件更改为稀疏文件,HSQL是否将数据文件维护为稀疏文件?或者文件系统是否标记为稀疏?
我如何解决这个问题,以便在不损坏数据的情况下取回我的HSQL数据库?我正在考虑使用hsqldb.cache_file_scale属性,但它仍然意味着当文件增长到64G时我会再次遇到问题
以防万一我在Debian 3.2上运行它并在Java 7u25上运行。
答案 0 :(得分:1)
您需要执行CHECKPOINT DEFRAG以不时压缩文件。
删除大量数据时,.data文件中的空间将丢失。上面的命令将当前.data文件重写为一个小得多的新文件。
如果文件已经变得非常大,或者您需要拥有一个庞大的数据库,则可以使用hsqldb.large_data = true属性连接,该属性可以启用非常大的数据库。