스프링부트 2-3 JPA 질문있습니다.

STS 4.18 버전에서 작업중인데
application.properties에 다음과 같이 작성하였고

# DATABASE
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:~/local
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

duild.gradle 에는 다음과 같이 작성하였습니다.

(...)
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
}
(...)

http://localhost:8080/h2-console 에서 jdbc:h2:~/local 로 접속 시도하자 다음과 같이 에러메시지가 뜹니다.

IO Exception: "C:/Users/tpdlf/local.mv.db" [90028-214] 90028/90028 (도움말)

어떤점이 잘못된걸까요...?

tpdlf197 1190

M 2023년 3월 22일 5:25 오후

C:/Users/tpdlf/local.mv.db 이 파일은 실제 존재하는지 확인해 보셨나요? 오류메시지는 트레이스 포함 전체를 보여주시면 좋을것 같습니다. - 박응용님, 2023년 3월 22일 6:58 오후 추천 , 대댓글
@박응용님 해당 경로에 파일 존재합니다. local.trace.db 파일도 저절로 생겨있습니다. 아래 오류메시지 전문입니다. ``` IO Exception: "C:/Users/tpdlf/local.mv.db" [90028-214] 90028/90028 (도움말) org.h2.jdbc.JdbcSQLNonTransientException: IO Exception: "C:/Users/tpdlf/local.mv.db" [90028-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:554) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.get(DbException.java:212) at org.h2.mvstore.db.Store.convertMVStoreException(Store.java:171) at org.h2.mvstore.db.Store.<init>(Store.java:145) at org.h2.engine.Database.<init>(Database.java:324) at org.h2.engine.Engine.openSession(Engine.java:92) at org.h2.engine.Engine.openSession(Engine.java:222) at org.h2.engine.Engine.createSession(Engine.java:201) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:338) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122) at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:288) at org.h2.server.web.WebServer.getConnection(WebServer.java:808) at org.h2.server.web.WebApp.login(WebApp.java:1033) at org.h2.server.web.WebApp.process(WebApp.java:226) at org.h2.server.web.WebApp.processRequest(WebApp.java:176) at org.h2.server.web.JakartaWebServlet.doGet(JakartaWebServlet.java:129) at org.h2.server.web.JakartaWebServlet.doPost(JakartaWebServlet.java:166) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:731) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: org.h2.mvstore.MVStoreException: Reading from file sun.nio.ch.FileChannelImpl@11b20061 failed at 1000 (length 1000), read 1000, remaining 7192 [2.1.214/1] at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:1004) at org.h2.mvstore.DataUtils.readFully(DataUtils.java:470) at org.h2.mvstore.FileStore.readFully(FileStore.java:98) at org.h2.mvstore.MVStore.readStoreHeader(MVStore.java:837) at org.h2.mvstore.MVStore.<init>(MVStore.java:463) at org.h2.mvstore.MVStore$Builder.open(MVStore.java:4082) at org.h2.mvstore.db.Store.<init>(Store.java:136) ... 48 more Caused by: java.io.EOFException at org.h2.mvstore.DataUtils.readFully(DataUtils.java:458) ... 53 more ``` - tpdlf197님, M 2023년 3월 22일 8:47 오후 추천 , 대댓글
@tpdlf197님 파일에 문제가 있어 보입니다. local.mv.db 파일을 삭제하시고 다시 생성하신후 진행해 보세요. - 박응용님, 2023년 3월 22일 10:22 오후 추천 , 대댓글
@박응용님 local.mv.db 파일을 삭제하고 다시 생성하니 정상적으로 H2콘솔에 진입됩니다. 감사합니다!!! - tpdlf197님, 2023년 3월 22일 11:06 오후 추천 , 대댓글
목록으로
1개의 답변이 있습니다. 1 / 1 Page

cmd에서 local.mv.db 생성시 h2 콘솔 연결오류가 계속 발생해서 혹시 다른분들이 보실까봐 글 남깁니다.

해당 오류
IO Exception: "C:/Users/사용자명/local.mv.db" [90028-214] 90028/90028 (Help)
org.h2.jdbc.JdbcSQLNonTransientException: IO Exception:

해결 방법
C:/Users/사용자명/ 해당 경로에서 빈 txt 파일 만든다음에 파일명을 local.mv.db로 바꿔주니까 연결됐습니다.

개발환경
스프링부트 버전
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.17'
id 'io.spring.dependency-management' version '1.1.5'
}
h2 2.1.214버전
자바 11 사용

dzface031

M 2024년 6월 8일 5:56 오후

저도 이 방법으로 시도해보니 정상적으로 진행되네요. 감사합니다! - sam2746님, 2024년 7월 17일 10:29 오후 추천 , 대댓글