ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [문제해결] 새 데이터를 받아오지 않는 H2
    오늘/Error 2023. 10. 31. 15:48

     

     

     

    문제발생

    강의를 듣던 중 H2 데이터베이스가 계속 다른 강의 (전에 들은) 의 데이터를 가져오고

    현재 듣고 있는 강의의 데이터를 보여주지 않는 문제가 발생했다.

     

    해결 시도

    먼저 인텔리제이 내부에서 H2 DB를 삭제했다가 새로이 깔아보았지만,

    당연히 실행되지 않았다.

    단순 삭제 외에도  H2콘솔에 저장된 사용자명을 변경한다거나  URL을 새로 만드는 등의 변경사항을 주어도

    문제는 해결되지 않았다.

     

    이렇게  내가 배운 모든 방법을 써보았지만  다른 프로젝트의 데이터를 가져오는 일은 계속 되었고,

    튜터님께 도움을 구하게 되었다.

     

    튜터님은 첫번째로  H2 url의 포트를 확인하셨다.

     

    지금은 문제를 해결하는 과정에서 포트가 8080으로 변경되었지만  

    이전까지는 8082 포트를 점유하고 있었다.

     

    인텔리제이를 모두 종료하면 H2도 당연히 접속이 되지않아야 정상적으로 동작하는 것인데,

    인텔리제이를 모두 종료했음에도 불구하고 H2는 계속 접속이 되고 있었다.

     

    그래서 cmd를 통해 8082포트를 점유하고있는 pid번호를 알아낸뒤  taskkill을 통해 강제로 종료시켰다.

    이를 통해 인텔리제이를 종료 한 후에 H2가 동작하는 문제를 해결 할 수 있었다.

     

     

     

    그렇지만 문제가 완벽히 해결된 것은 아니었기에  기존 문제의 해결방안을 찾아야했다.

     

    포트를 점유하던 프로세스를 종료했으니 다시 한번 db를 새로 만들어 보았다.

    -> 실패

     

    기존에 진행했던 방식을 다시 한번씩 해보았지만 결과는 같았다.

     

    그러나 H2 콘솔에서는 변화가 있었는데

    접속 시도시  하단에  (데이터베이스명).mv.db 파일에 문제가 있다는 에러가 계속 출력되었다.

     

    이를 바탕으로   우선 인텔리제이에서  gradle의 버전을 3.1.5에서  2.7.5로 다운그레이드 하였고,

    (데이터베이스명).mv.db 이 있는 폴더로 가서  해당되는 파일 전체를 삭제하고 

    인텔리제이에서 다시 db를 만들어 연결하였다.

     

    결과는 성공

     

     

    원인은 h2가 계속 이전에 작업한 데이터베이스 파일을 나타내고 있었기 때문인데

    관련 파일을 모두 삭제하고 새로 연결하는 것이 해답이었던 것이다.

     

    튜터님과 함께 해결하였기에 중간중간 캡쳐를 못한 부분이 아쉽지만

    기록으로라도 남겨서  후에 같은 에러가 생겼을 때

    이 글을 보고 해결 할 수 있었으면 한다.

     

     

     

    또한 이러한 에러를 방지하려면

    데이터베이스를 잘 다루지 못하는 나같은 경우엔  

    프로젝트마다 다른 db를 연결하는 것이 나을 것 같다.

    여러 강의에서 모두 h2만 연결하길래 H2만 쓰는게 최선인줄 알았으나, 모든 데이터베이스가 연결 가능하며 

    그렇게 해도 전혀 문제가 없었다.

     

    그래서 한 프로젝트는 MySQL,  다른 프로젝트는 H2를 연결해서  임시방편으로 사용해야겠다.

Designed by Tistory.