유닛 테스트에서 H2 데이터베이스를 만들고 있습니다. 데이터베이스는 다음 속성을 사용합니다.H2 데이터베이스 파일을 찾을 수 없습니까?
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:file:target/db/testdb"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
com.h2database.h2
jar 파일의 버전 1.3.166을 사용하고 있습니다.
테스트를 실행할 때 데이터베이스가 target/db
디렉토리에 생성되고 testdb.h2.db
파일이 존재합니다. 내 테스트가 실행되고 데이터베이스에서 데이터를로드합니다. target/db/testdb.h2.db
파일을 열고 데이터베이스를 만드는 데 사용한 SQL 문을 볼 수 있습니다.
그러나 target/db/testsb.h2.db
파일을 DBVisualizer와 같은 데이터베이스 탐색 도구에로드하려고하면 테이블이나 데이터를 볼 수 없습니다. DBVisualizer의 경우 H2 (Embedded) 모드를 지정합니다.
또한 H2 콘솔을 시도했지만 show tables
명령이 빈 결과 집합을 반환합니다.
내가 잘못하고있는 것을 볼 수 없습니다. 데이터베이스 파일이 존재하고 테스트가 올바르게 실행되지만 데이터베이스 브라우저에서이 파일을 열 수 없습니다.
제안 사항?
실제로 문제는 DBVisualizer에서 파일을 어떻게 지정했는지입니다. 데이터베이스 파일을 요청하고 파일 선택기 대화 상자를 열고'target/db/testdb.h2.db' 파일을 자연스럽게 두 번 클릭했습니다. 그러나 올바른 방법은'.h2.db' 확장자를 제거하는 것입니다. UI 디자인이 잘못되었습니다. –
나는 H2 (2.0 어쩌면)의 다음 시장 버전에서 하드 코드 된 파일 이름 접미사가 없을 것이라고 생각한다. –
@JohnQCitizen 당신은 일주일 내내 내 모든 인터넷에서 승리합니다! 이것이 문제였습니다. 데이터베이스 마이그레이션을 사용하고 있는데 왜 테이블이 만들어지지 않았는지 알 수 없었습니다. .h2.db를 제거하면 트릭을 만들었다. ui를 사용하십시오!그리고 해결책을 가져 주셔서 감사합니다! – Maik