2012-04-18 4 views
1

최대 절전 모드를 사용할 때 적합한 드라이버를 찾을 수 없습니다. 나는 내가 할 수있는 것에 따라 driver jar가 classpath에있다라고 꽤 확신한다 Class.forName("com.mysql.jdbc.Driver"). 사실 지금은 세션 팩토리를 빌드하고 코드가 작동하기 전에 이것을 호출합니다. 그러나 이것은 '안전한'것인가? 왜 이런 일이 일어나는 걸까요? Hibernate jdbc 적합한 드라이버를 찾지 못했습니다

<session-factory> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> 

    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password">password</property> 

    <property name="connection.pool_size">1</property> 

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 

    <property name="show_sql">true</property> 
    <property name="format_sql">true</property> 
    <property name="use_sql_comments">false</property> 

    <mapping resource="User.hbm.xml" /> 
</session-factory> 

는 JAR가 CLASSPATH에있는 것처럼 소리가 당신

+1

그렇다면 클래스 로딩 문제가 발생할 수 있습니다. 최대 절전 모드에 비해 jdbc 드라이버 jar는 어디에 있습니까? – Jeroen

+0

내 모든 항아리는'WEB-INF/lib'에 있습니다. 제가 말했던 것처럼 매우 이상합니다. 세션 팩토리를 설정하기 전에'Class.forName ("com.mysql.jdbc.Driver");를 호출하기 만하면 데이터베이스를 쿼리 할 수 ​​있고 데이터가 반환됩니다. 내 솔루션이 안정적이고 안전한 지 궁금합니다 ... – WakaJawaka

답변

1

감사 : 여기 내 설정이다. 그렇지 않은 경우 NoClassDefFound 예외가 발생합니다.

보통 적합한 드라이버가 없다는 것은 해당 드라이버에 대해 연결 URL 구문이 올바르지 않다는 것을 의미합니다.

MySQL이 필요합니다. "jdbc:mysql://server:3306/database" - 올바른 것으로 보입니다.

로컬 호스트를 확인할 수없는 경우 문제가 발생합니다. 아마도 127.0.0.1이 더 잘 작동 할 것입니다.

MySQL이 포트 3306에서 수신 대기합니까?

연결을 요청한 데이터베이스가 있습니까? MySQL 클라이언트를 통해 로그인하고 테이블과 데이터를 볼 수 있습니까?

+0

드라이버는 지정된 호스트 또는 포트를 사용할 수없는 경우에도 올바른 형식의 URL (즉, 특정 드라이버에 대해 설정된 URL 구문 준수)을 받아 들여야합니다. 잇다. DriverManager는 두 단계로 연결을 설정합니다. 먼저 사용 가능한 모든 드라이버에서 반복하여 지정된 URL을 수락할지 묻는 메시지가 나타나면이를 수락 한 첫 번째 드라이버가 실제로 연결을 설정하는 데 사용됩니다. 드라이버의 URL을 수락하지 않으면 질문의 오류가 첫 번째 부분에 표시됩니다. –

+0

내가 그 오류를봤을 때, 나는 내가 사용하고 있던 드라이버에 문법 오류가 있음을 의미했다. 그래서 올바른 MySQL URL 구문을 제공하고 Oracle JDBC 드라이버 JAR 또는 잘못된 Oracle URL 구문을 사용하면 표시됩니다. 그것이 당신이 그것을 의미하는 방법이라면, 우리는 동의합니다. – duffymo

+0

그건 당신이 호스트와 포트를 해결하는 것에 대해 이야기하는 것처럼 제가 의미했던 것입니다. 운전사가 URL을 수락 한 후에야 그 일이 시작됩니다. –

관련 문제