2011-03-08 4 views
23

Hibernate + Spring을 사용하여 데이터베이스를 다시 만들려고하면서 생성 된 SQL은 각 작성 문 끝에 "type=InnoDB"을 추가합니다. 이건 내 MySQL5.5.9 설정에 문제를 일으키는 것 같다. 그것은 다음과 같은 오류 발생 : 나는 수동 유형 = InnoBD를 제거하고 MySQL의에서 create 명령을 붙여 넣을 경우TYPE의 MySQL 5.5.9 및 Hibernate 테이블 생성 오류

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=InnoDB' at line 1

을, 그것을 잘 작동합니다.

이 오류가 발생 했습니까? 변경해야 할 MySQL 설정일까요? 내 /etc/my.cnf으로 my-innodb-heavy-4G.cnf 템플릿을 사용하고 있습니다.

또한 type 구문이 MySQL에서 사용되지 않으며 engine이 사용되어야한다는 것을 알고 있습니다 (수동으로 작성 문을 변경하는 경우에도 마찬가지입니다). Hibernate에서 이것을 설정하는 방법이 있습니까?

감사

답변

63

사용 MySQL5InnoDBDialect 대신 MySQLInnoDBDialect.

+3

전설! 감사! –

+0

고마워. 정말 도움이되었습니다. – n0rm1e

+0

유용한 답변이지만, MySQLInnoDBDialect의 문제점은 무엇입니까? –

5

'MySQL5InnoDBDialect'를 사용하면 5.1 및 5.5에서 작동합니다.

0

MySQL5InnoDBDialect를 추가 한 후에도 "Engine = InnoDB"와 동일한 오류가 발생합니다. 그래서 MySQL5InnoDBDialect를 속성 파일에 추가하고 모델 파일에서 @Table 주석을 제거했습니다.

0

type은 더 이상 사용되지 않으며 최신 버전에서 제거되었습니다. Grails의에서 engine=InnoDB

1

사용 DataSource.groovy에

변경 방언 문을

예 : 대신 방언 = 조직 "의

사용"= org.hibernate.dialect.MySQL5InnoDBDialect 방언 ". hibernate.dialect.MySQLInnoDBDialect "

당신의 프로젝트에서 같은 접근법을 사용할 수 있습니다.

감사

-1

없음 MEU의 CASO, instalei 오의 MySQL v5.6.20, 전자 AO rodar minha aplicação 케 미국 최대 절전 모드, teve colocar MySQL5InnoDBDialect.

SEGUE O를 trecho (persistence.xml을) 다 태그 속성 : 그냥 경우

<properties> 
     <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 
     <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/livrariadb" /> 
     <property name="javax.persistence.jdbc.user" value="root" /> 
     <property name="javax.persistence.jdbc.password" value="****" /> 

     <property name="hibernate.hbm2ddl.auto" value="update" /> 
     <property name="hibernate.show_sql" value="false" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> 
</properties> 
+0

포르투갈어 버전의 StackOverflow가 아닙니다. – dccarmo

1

당신은 (예를 들어, MariaDB에) org.hibernate.dialect.MySQL5InnoDBDialect로 변경하고 여전히 오류가 발생하는 여부를 확인 한 경우 테이블 이름 (또는 쿼리의 다른 이름)은 예약어 나 기존 개체 이름 (예 : '위치')이 아닙니다.