HSQLDB SQLException:建立数据库连接的内存不足



我们有一个带有本地HSQLDB数据库的桌面应用程序。一些客户报告他们的应用程序停止工作。当我尝试使用 DbVisualizer 打开它时,我可以在调试控制台上看到以下内容:

12:45:32 [DEBUG pool-2-thread-1 D.?] RootConnection:     jdbcDriver.connect("jdbc:hsqldb:C:testdatabase.db", {user=**, password=})
java.sql.SQLException: error in script file line: 56 out of memory
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    at org.hsqldb.jdbc.jdbcConnection.<init>(Unknown Source)
    at org.hsqldb.jdbcDriver.getConnection(Unknown Source)
    at org.hsqldb.jdbcDriver.connect(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.onseven.dbvis.d.B.D.?(Z:1548)
    at com.onseven.dbvis.d.B.F$A.call(Z:278)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

任何人都知道该怎么做才能打开它并分析问题所在?

通常,当数据库损坏时会发生此异常。尝试备份数据库。有关此主题的其他讨论,请参阅此处。

使用不兼容的驱动程序版本打开 HSQLDB 数据库时,可能会出现此错误。例如,我在使用版本 2.2.8 打开与版本 1.8.1.3 一起保存的 HSQLDB 数据库时收到它。我使用 SQuirrel 查看这些数据库,并且必须设置几个不同的驱动程序来支持每个版本。我想DB Visualizer具有类似的功能。

确保如果

数据库非常大,则为堆分配更多内存。 请参阅 Java 堆空间不足

最新更新