티뮤

H2 DB 접속 에러 잡기 본문

IT/개발

H2 DB 접속 에러 잡기

티뮤 2022. 4. 5. 20:08
728x90

H2  DB를 사용하는 중 갑자기 아래와 같은 에러가 발생할 경우가 있습니다.

File corrupted while reading record: null. Possible solution: use the recovery tool [90030-199] 90030/90030 (도움말)
org.h2.jdbc.JdbcSQLNonTransientConnectionException: File corrupted while reading record: null. Possible solution: use the recovery tool [90030-199]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:617)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
    at org.h2.message.DbException.get(DbException.java:194)
    at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:205)
    at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:173)
    at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:95)
    at org.h2.engine.Database.getPageStore(Database.java:2739)
    at org.h2.engine.Database.open(Database.java:769)
    at org.h2.engine.Database.openDatabase(Database.java:319)
    at org.h2.engine.Database.<init>(Database.java:313)
    at org.h2.engine.Engine.openSession(Engine.java:69)
    at org.h2.engine.Engine.openSession(Engine.java:201)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:178)
    at org.h2.engine.Engine.createSession(Engine.java:161)
    at org.h2.server.TcpServerThread.run(TcpServerThread.java:160)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalStateException: The write format 2 is larger than the supported format 1, and the file was not opened in read-only mode [1.4.199/5]
    at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:883)
    at org.h2.mvstore.MVStore.readStoreHeader(MVStore.java:705)
    at org.h2.mvstore.MVStore.<init>(MVStore.java:401)
    at org.h2.mvstore.MVStore$Builder.open(MVStore.java:3343)
    at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:162)
    ... 11 more

    at org.h2.message.DbException.getJdbcSQLException(DbException.java:617)
    at org.h2.engine.SessionRemote.done(SessionRemote.java:607)
    at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:143)
    at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:431)
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:317)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:169)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:148)
    at org.h2.Driver.connect(Driver.java:69)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:189)
    at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:320)
    at org.h2.server.web.WebServer.getConnection(WebServer.java:782)
    at org.h2.server.web.WebApp.login(WebApp.java:1004)
    at org.h2.server.web.WebApp.process(WebApp.java:219)
    at org.h2.server.web.WebApp.processRequest(WebApp.java:169)
    at org.h2.server.web.WebThread.process(WebThread.java:139)
    at org.h2.server.web.WebThread.run(WebThread.java:93)
    at java.base/java.lang.Thread.run(Thread.java:834)

 

이럴 경우 user 폴더 아래 [DB명.mv.db] 파일을 삭제 후 같은 이름으로 파일을 임의로 생성해주시면 정상 접속이 가능합니다.

저의 경우 DB명이 test이기 때문에 test.mv.db 파일을 삭제 후 다시 생성해 주었습니다.

이 때 별도의 내용을 작성하실 필요는 없습니다.

※※※※※※※ 해당 방법으로 오류 해결 시 DB의 내용이 초기화 됩니다. ※※※※※※※

[실행 화면]

728x90
Comments