2011-03-24 2 views
8

나는 Apache Derby를 메모리에 사용하는 단위 테스트를 많이 가지고 있습니다. 내 연결 URL은 다음과 같습니다 jdbc:derby:memory:srf.derby;create=true메모리에서 Apache Derby를 사용할 때의 경고

내가하는 방법이 @Transactional로 표시 할 때마다이 마무리되는 것을 발견, 나는 더비가

12:53:28:5328 [org.hibernate.util.JDBCExceptionReporter] [main] WARN - SQL Warning: 10000, SQLState: 01J01 
12:53:28:5328 [org.hibernate.util.JDBCExceptionReporter] [main] WARN - Database 'memory:srf.derby' not created, connection made to existing database instead. 

이 왜 경고가 나타납니다? 내가 뭘 잘못하고있어? 당신이 잘못 아무것도하지 않는

+0

스프링의 @ 거래입니까? – TheConstructor

답변

8

감사합니다. 매번 '; create = true'를 전달하지만 데이터베이스는 프로그램이 처음 액세스 할 때 작성됩니다. 메모리에 있기 때문에 프로그램이 종료 될 때까지 데이터베이스가 멈추고 그 시점에서 데이터베이스가 사라집니다.

테스트 스위트의 첫 번째 테스트에서만 '; create = true'를 전달하면 경고 메시지가 표시되지 않으므로 이후 테스트에서 해당 값을 전달할 필요가 없습니다.

또는 경고에 대해 걱정할 필요가 없습니다.

+0

문제는 데이터베이스 생성이 아닙니다. 동일한 테스트 중에 트랜잭션 방식을 실행할 때마다이 경고가 인쇄됩니다. 파일 기반 임베디드 DB로 전환 했는데도 여전히 동일한 경고가 표시됩니다. –

+3

정확하게 말하면, 이미 존재하는 Derby 데이터베이스에 연결할 때마다 "; create = true"가 포함 된 연결 URL을 사용하면 경고. 메모리에 있기 때문에가 아닙니다. 이미 존재하고 있기 때문에 Derby에 생성을 알리기 때문입니다. –

관련 문제