티스토리 뷰

JDBC를 자바를 이용해서 직접 구현하는 과정에서 발생했던 작은 오류들을 정리해보려고 한다.


1. org.h2.jdbc.JdbcSQLException: Table "USERS"


현재 H2 Database를 이용해서 구현을 하고 있는데, 특정 옵션을 하지 않으면 연결이 끊어지면 데이터베이스에 작업했던 데이터가 모두 사라지게 된다.

그렇기 때문에 연결이 끊어지는 순간, 테이블을 생성했던 데이터가 사라지고, 데이터를 삽입하려 했을 때 발생했다. Connection이 끊어져도 이전에

작업했던 데이터들이 남아 있을 수 있도록 설정이 필요하다. 'DB_CLOSE_ON_EXIT=FALSE' 설정이 필요하다!


하지만, 나는 그 설정을 했지만, 같은 오류가 계속 발생했다. 이유는 테이블에 대한 생성 쿼리를 보관하고 있는 db.sql 파일이 실행되지 않아서였다.

테스트 코드에서는 실행이 되지 않았다. 그러니 당연히, 테이블이 존재하지 않았던 것이다. 아래 코드를 테스트 코드에 입력해서 해결했다.

 
ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
populator.addScript(new ClassPathResource("db.sql"));
DatabasePopulatorUtils.execute(populator, ConnectionManager.getDataSource());


2. org.h2.jdbc.JdbcSQLException: No data is available


실행하려는 SQL 구문에 데이터가 없을 경우에 발생하는 오류이다. 이 문제는 StackOverFlow 에서 찾아서 해결을 했는데 링크는 아래와 같다
ResultSet에 있는 데이터를 꺼내려고 할 때, 데이터가 하나이기 때문에 rs.next 로 바로 꺼내려 했다. (if, while 문 없이)
그럴 경우에는 ResultSet에서 원하는 데이터를 꺼낼 수 없었다. 마치 정규식을 사용할 때, find() 메소드를 사용하지 않으면 정규식에 대한 데이터를 접근하지 
못하는 것처럼 말이다.  


'Java' 카테고리의 다른 글

JSP 동작순서  (0) 2020.02.16
ReflectionTestUtils 활용한 테스트 자동화  (2) 2019.05.14
자바 리플렉션 - 예제 코드  (0) 2019.01.19
자바 리플렉션 (Reflection) - 소개  (0) 2019.01.18
프로세스와 스레드  (0) 2018.12.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함