1
當啓動一個嵌入的HSQLDB有時記錄例外:檢測HSQLDB初始化失敗是由於腐敗
2016-11-08 10:35:27 INFO h.d.H.ENGINE user:NA company:NA remotehost:NA dataFileCache open start
2016-11-08 10:35:27 INFO h.d.H.ENGINE user:NA company:NA remotehost:NA dataFileCache open end
2016-11-08 10:35:31 ERROR h.d.H.ENGINE user:NA company:NA remotehost:NA statement error processing log /home/jetty/test/testdb/test.dbline: 87137
org.hsqldb.HsqlException: user lacks privilege or object not found: PUBLIC.FROM
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.SchemaManager.getUserTable(Unknown Source) ~[hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.scriptio.ScriptReaderText.processStatement(Unknown Source) ~[hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.scriptio.ScriptReaderText.readLoggedStatement(Unknown Source) ~[hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.persist.ScriptRunner.runScript(Unknown Source) ~[hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.persist.ScriptRunner.runScript(Unknown Source) ~[hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.persist.Log.processLog(Unknown Source) ~[hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.persist.Log.open(Unknown Source) ~[hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.persist.Logger.openPersistence(Unknown Source) [hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.Database.reopen(Unknown Source) [hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.Database.open(Unknown Source) [hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source) [hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.DatabaseManager.newSession(Unknown Source) [hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source) [hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source) [hsqldb-2.2.7.jar:2.2.7]
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source) [hsqldb-2.2.7.jar:2.2.7]
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:95) [HikariCP-2.4.3.jar:na]
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:101) [HikariCP-2.4.3.jar:na]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:314) [HikariCP-2.4.3.jar:na]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:171) [HikariCP-2.4.3.jar:na]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:436) [HikariCP-2.4.3.jar:na]
at com.zaxxer.hikari.pool.HikariPool.access$500(HikariPool.java:65) [HikariCP-2.4.3.jar:na]
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:567) [HikariCP-2.4.3.jar:na]
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:560) [HikariCP-2.4.3.jar:na]
at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.7.0_51]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.7.0_51]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.7.0_51]
at java.lang.Thread.run(Unknown Source) [na:1.7.0_51]
2016-11-08 10:35:31 INFO h.d.H.ENGINE user:NA company:NA remotehost:NA checkpointClose start
2016-11-08 10:35:31 INFO h.d.H.ENGINE user:NA company:NA remotehost:NA dataFileCache commit start
2016-11-08 10:35:31 INFO h.d.H.ENGINE user:NA company:NA remotehost:NA checkpointClose end
2016-11-08 10:35:32 INFO c.x.p.d.u.DataSourceFactory user:NA company:NA remotehost:NA Database connection is OK!
2016-11-08 10:35:32 INFO c.x.p.d.u.DataSourceFactory user:NA company:NA remotehost:NA Initialising data source: Liquibase
2016-11-08 10:35:32 INFO c.x.p.d.u.DataSourceFactory user:NA company:NA remotehost:NA HSQLDB used
好像HSQLDB吞下這些異常。
這會導致我們的java代碼繼續運行,即使數據庫可能已損壞。
有沒有辦法來捕捉這些異常?
或者Java API調用來驗證數據庫是否正確啓動?
你可以發佈你的代碼在哪裏訪問數據庫? – developer
由於存在持久性問題,2.2.7版本很快被替換爲2.2.8。如果不是最新版本,至少要切換到該版本。 – fredt
@javaguy我們不是晚上查詢數據庫呢。當HSQLDB被初始化時會發生這種情況。通過Hikari初始化HSQLDB: 'hikariConnPool.setDriverClassName(org.hsqldb.jdbcDriver.class.getName()); hikariConnPool.setJdbcUrl(「jdbc:hsqldb:」+ Configuration.databasePath);' – pietervi