2011-06-10 2 views
1

HSQL DB와 함께 최대 절전 모드를 사용 중이다. "testdb"라는 파일 기반 HSQL 데이터베이스가 있습니다.Hibernate가 HSQLDB 파일 기반 DB에 접속할 수 없음, 응답하지 않는다.

내 HSQL 파일 문자열 URL에 연결하려고하면 응용 프로그램이 중단됩니다.

그것은 바로이 최대 절전 모드 출력 후 응답 : 문제가 하지가 인 - 메모리 HSQL으로 발생한다는 것을

INFO: using driver: org.hsqldb.jdbcDriver at URL: jdbc:hsqldb:file:testdb 
INFO: connection properties: {user=SA, password=****} 

참고. URL이 "jdbc : hsqldb : mem : testdb"이면 모든 것이 작동합니다. 그래서 파일 설정 문제입니다.

Hibernate에서 DB가 존재하는지, HSQL 파일이 존재하는지, 테이블이 있는지 찾아 볼 수 있는지 확인했다.

실제로 File :에 존재하지 않는 파일을 지정하더라도 여전히 중단됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 감사합니다

내있는 hibernate.cfg.xml :

첫 번째 연결 시도가 데이터베이스를 열려고
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
    <session-factory> 
    <!-- Database connection settings --> 
     <property name="connection.driver_class">org.hsqldb.jdbcDriver</property> 
     <property name="connection.url">jdbc:hsqldb:file:testdb</property> 
     <property name="connection.username">SA</property> 
     <property name="connection.password"></property> 

     <!-- JDBC connection pool (use the built-in) --> 
     <property name="connection.pool_size">2</property> 

     <!-- SQL dialect --> 
     <property name="dialect">org.hibernate.dialect.HSQLDialect</property> 

     <!-- Echo all executed SQL to stdout --> 
     <property name="show_sql">true</property> 

     <!-- Drop and re-create the database schema on startup --> 
     <property name="hbm2ddl.auto">create</property> 

    </session-factory> 
</hibernate-configuration> 
+0

당신은 "DB가 존재하고 HSQL 파일이 존재한다는 것을 Hibernate에서 확인했습니다."라고 말했을 때 어떻게 응답 했습니까? 두 프로세스에서 동시에 "file :"데이터베이스에 액세스 할 수 없습니다. 첫 번째 연결이 만들어 질 때 .lck 파일이 만들어 졌는지 확인하십시오. 그렇지 않으면 파일 권한 문제가있을 수 있습니다. – fredt

+0

감사합니다. .lck 파일이 폴더에 있었지만 삭제했습니다. 응용 프로그램을 실행할 때 볼 수있는 .lck 파일 (.log, .properties 및 .script 만)은 없지만 파일 DB에 연결하려고하면 응용 프로그램이 계속 중단됩니다. 또한 JDBC를 통해 중단됩니다. – user783312

답변

1

는, 그것이 .LCK 파일을 만듭니다. 이 파일에는 정기적으로 갱신되는 시간 소인이 들어 있으며 동시에 다른 프로세스가 데이터베이스에 연결하는 것을 방지합니다. 다른 데이터베이스가 연결되어 있지 않으면 연결을 방해하지 않습니다. 따라서 .lck 파일을 삭제할 필요가 없습니다.

연결 시도 중에 .lck 파일이 작성되지 않은 경우 연결이 설정되지 않았 음을 나타냅니다. 파일 액세스 권한에 문제가있을 수 있습니다.

GUI DatabaseManager로 연결하여 데이터베이스 자체를 항상 확인할 수 있습니다.

0

데이터베이스에 테이블이 너무 많아 데이터베이스 개체를 가져 오는 데 시간이 걸립니다.

관련 문제