【问题标题】:org.h2.jdbc.JdbcSQLException: General error: "java.lang.NullPointerException" [50000-178]org.h2.jdbc.JdbcSQLException:一般错误:“java.lang.NullPointerException”[50000-178]
【发布时间】:2015-11-12 08:41:00
【问题描述】:

我有一个 30 MB 的小 h2 数据库文件。驱动程序版本为 1.4.178。 一切正常,但最近数据库停止使用 例外:

org.h2.jdbc.JdbcSQLException: General error: "java.lang.NullPointerException" [50000-178] 
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:344) 
    at org.h2.message.DbException.get(DbException.java:167) 
    at org.h2.message.DbException.convert(DbException.java:294) 
    at org.h2.engine.Database.openDatabase(Database.java:293) 
    at org.h2.engine.Database.<init>(Database.java:256) 
    at org.h2.engine.Engine.openSession(Engine.java:57) 
    at org.h2.engine.Engine.openSession(Engine.java:164) 
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:142) 
    at org.h2.engine.Engine.createSession(Engine.java:125) 
    at org.h2.server.TcpServerThread.run(TcpServerThread.java:150) 
    at java.lang.Thread.run(Thread.java:744) 
Caused by: java.lang.NullPointerException 
    at org.h2.mvstore.DataUtils.parseMap(DataUtils.java:630) 
    at org.h2.mvstore.MVStore.openMap(MVStore.java:411) 
    at org.h2.mvstore.db.TransactionStore.<init>(TransactionStore.java:96) 
    at org.h2.mvstore.db.MVTableEngine$Store.<init>(MVTableEngine.java:161) 
    at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:94) 
    at org.h2.engine.Database.getPageStore(Database.java:2355) 
    at org.h2.engine.Database.open(Database.java:659) 
    at org.h2.engine.Database.openDatabase(Database.java:262) 
    ... 7 more 

    at org.h2.engine.SessionRemote.done(SessionRemote.java:610) 
    at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:129) 
    at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:434) 
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:315) 
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:107) 
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:91) 
    at org.h2.Driver.connect(Driver.java:74) 
    at org.h2.server.web.WebServer.getConnection(WebServer.java:684) 
    at org.h2.server.web.WebApp.test(WebApp.java:896) 
    at org.h2.server.web.WebApp.process(WebApp.java:222) 
    at org.h2.server.web.WebApp.processRequest(WebApp.java:171) 
    at org.h2.server.web.WebThread.process(WebThread.java:138) 
    at org.h2.server.web.WebThread.run(WebThread.java:94) 
    at java.lang.Thread.run(Thread.java:744) 

问题出现在我的应用程序和使用 H2 Web 前端。

【问题讨论】:

标签: java database jdbc h2 h2db


【解决方案1】:

目前尚不清楚您是在尝试修复此 NPE 的原因,还是在尝试检索数据库的内容。

我建议如下:

如果 NPE 问题仍然存在,您需要在此论坛中提供更多详细信息。

【讨论】:

  • 我一直在尝试恢复数据。备份创建的数据库脚本,但在还原时抛出错误 C:\GamificationDB>java -cp C:\GamificationDB\h2-1.4.188.jar org.h2.tools.RunScript -url jdbc:h2:~/GamificationDB -脚本 test.zip -options compression zip 线程“main”org.h2.jdbc.JdbcSQLException 中的异常:函数别名“READ_BLOB”已经存在; SQL 语句:CREATE FORCE ALIAS PUBLIC.READ_BLOB FOR "org.h2.tools.Recover.readBlob" [90076-188]
  • 请告诉我您需要修复 NPN 的详细信息
  • @SubhaChandra 需要更多应用程序上下文。例如:使用什么软件堆栈,您使用什么类型的 SQL 表,jdbc URL,等等......您无法从还原中重新创建干净的数据库这一事实很有趣。我去看看。
  • 您是否尝试编辑 test.zip 中的 sql 并评论有问题的行“CREATE FORCE ALIAS PUBLIC.READ_BLOB...”?
猜你喜欢
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 2022-06-22
  • 2020-04-23
  • 2013-05-24
相关资源
最近更新 更多