2014-12-11 4 views
0

나는 최대 절전 모드 4.2.1과 MySQL 5.5를 사용하고있다.최대 절전 모드 MySQLMyISAMDialect가 작동하지 않습니까?

<!-- ... --> 
<properties> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.hbm2ddl.auto" value="update" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLMyISAMDialect" /> 

</properties> 

을하지만 난 내 인텔리을 실행하면 내 데이터베이스는 테이블이 없습니다 :이 persistence.xml에서

나는이있다!

아무도 아이디어가 있습니까?! 감사합니다.

답변

0

구성에서 방언 라인을 완전히 제거하십시오.

Hibernate는 당신이 올바른 사용자 이름/패스워드를 제공한다고 가정 할 때 기본 데이터베이스 메타 데이터에 기반하여 어떤 dialect를 사용할지를 탐지 할 수있다. 필자는 Hibernate가 데이터베이스 버전 자동 검색에 문제가 없었습니다. 이것은 MySQL이 특히 유용합니다. 왜냐하면 MySQL은 다른 버전의 방언을 사용할 수 있기 때문입니다. 당신은 다음과 같은 예외가

org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set 

를 참조하면

는 사용자 이름/암호가 잘못되었음을 의미하며, Hibernate는 실제로 자신의 방언의 선택 메타 데이터를 읽고, 데이터베이스에 연결할 수 없습니다.

나는 SQL 스크립트를 사용하여 데이터베이스 테이블을 설정하고 Hibernate를 validate 스키마로 설정하는 것이 더 쉽다는 것을 발견했다. Hibernate가 어떤 데이터베이스 구조 (create-update 또는 단지 update을 사용)를 생성하는 것은 프로덕션 환경에 권장되지 않는다. 왜냐하면 데이터베이스 설정 방법에 대한 제어권을 상실하기 때문이다.

TL; DR : 최대 절전 모드가 자신의 방언을 선택하도록하십시오. 그것은 당신에게 소란의 시간을 절약 할 것입니다.

+0

응답 해 주셔서 감사합니다. 내 persistence.xml에서 dialect line을 이미 제거했지만, 최대 절전 모드는 여전히 InnoDB 저장소의 데이터베이스를 생성합니다 !! 또한 이것을 제거해야합니다 : \t \t \t <속성 이름 = "hibernate.hbm2ddl.auto"value = "update"/>. Thanks – BOSS

+0

Hibernate가 InnoDB 사투리를 사용하고 있다면, 데이터베이스는 오래된 ISAM 스토리지 엔진이 아닌 InnoDB 스토리지 엔진을 사용하고있다. 귀하의 데이터베이스에 대한 설정. 그러나 ISAM은 InnoDB보다 오래된 기술입니다. – JamesENL