rela1470のブログ

rela1470がブログです。

Gitbucket復旧

Gitbucketが起動しなくなった。
最近メモリ不足で強制的にkillしていたりしたので、その影響だろうか...

org.h2.jdbc.JdbcSQLException: レコード "[3196] stream data key:1416407 pos:11 remaining:0" を読み込み中にファイルの破損を検出しました。可能な解決策: リカバリツールを使用してください

dbのリカバリを試みる
突然の電源断などでデータベースが壊れた場合

h2*.jarは、gitbucket.warの中にある。
Jettyを使っている場合は/home/gitbucket/.gitbucket/tmp/webapp/WEB-INF/lib/ 直下に展開されている。

cd /home/gitbucket/.gitbucket
java -cp /home/gitbucket/.gitbucket/tmp/webapp/WEB-INF/lib/h2-1.4.180.jar org.h2.tools.Recover

data.h2.sqlができる。

java -cp /home/gitbucket/.gitbucket/tmp/webapp/WEB-INF/lib/h2-1.4.180.jar org.h2.tools.RunScript -url jdbc:h2:./data -user sa -script data.h2.sql -showResults

sqlファイルを元にDBを一から構築。エラーが出る。

CREATE TABLE O_19(C0 VARCHAR, C1 VARCHAR, C2 VARCHAR, C3 CLOB);
【SQLの中身】 Exception in thread "main" org.h2.jdbc.JdbcSQLException: 一般エラー: "java.lang.NullPointerException"
General error: "java.lang.NullPointerException"; SQL statement:

削って再度流してみる。
だめだー。

どうやらREAD_CLOB_DBとある行が軒並みアウト。
全部削ってみる。
いけた。
data.mv.dbというファイルが生成される。

[2018/01/15 追記] ここから下が間違ってたらしい。詳しくは下記記事
oboenikui.hatenablog.com
元のファイル名と違うけどリネームしてOKか...?

mv data.mv.db data.h2.db

起動してみる。
だめー

2014-10-16 13:49:00.541:WARN:oejw.WebAppContext:Failed startup of context o.e.j.w.WebAppContext{/,file:/home/gitbucket/.gitbucket/tmp/webapp/},file:/usr/lib/gitbucket/gitbucket.war
org.h2.jdbc.JdbcSQLException: ファイル "/home/gitbucket/.gitbucket/data.h2.db" は、未サポートのバージョンか、不正なファイルヘッダを持つデータベースファイルです|Unsupported database file version or invalid file header in file "/home/gitbucket/.gitbucket/data.h2.db" [90048-180]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
        at org.h2.message.DbException.get(DbException.java:179)
        at org.h2.message.DbException.get(DbException.java:155)
        at org.h2.store.FileStore.init(FileStore.java:195)
        at org.h2.engine.Database.openFile(Database.java:527)
        at org.h2.store.PageStore.openExisting(PageStore.java:328)
        at org.h2.store.PageStore.open(PageStore.java:288)
        at org.h2.engine.Database.getPageStore(Database.java:2382)
        at org.h2.engine.Database.open(Database.java:663)
        at org.h2.engine.Database.openDatabase(Database.java:263)
        at org.h2.engine.Database.<init>(Database.java:257)
        at org.h2.engine.Engine.openSession(Engine.java:60)
        at org.h2.engine.Engine.openSession(Engine.java:167)
        at org.h2.engine.Engine.createSessionAndValidate(Engine.java:145)
        at org.h2.engine.Engine.createSession(Engine.java:128)
        at org.h2.engine.Engine.createSession(Engine.java:26)
        at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:347)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:108)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:92)
        at org.h2.Driver.connect(Driver.java:72)
        at java.sql.DriverManager.getConnection(DriverManager.java:571)
        at java.sql.DriverManager.getConnection(DriverManager.java:215)
        at servlet.AutoUpdateListener.getConnection(AutoUpdateListener.scala:239)
        at servlet.AutoUpdateListener.contextInitialized(AutoUpdateListener.scala:188)
        at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771)
        at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424)
        at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249)
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
        at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
        at org.eclipse.jetty.server.Server.doStart(Server.java:277)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
        at JettyLauncher.main(JettyLauncher.java:65)
2014-10-16 13:49:00.562:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:18080