2011-03-08 22 views
23

Al intentar recrear mi base de datos utilizando Hibernate + Spring, el SQL que get's agrega "type=InnoDB" al final de cada declaración de creación. Esto parece causar problemas con mi configuración de MySQL5.5.9. Se produce el siguiente error:Error de creación de tablas MySQL 5.5.9 e Hibernate en TYPE

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

Si quito manualmente el tipo = InnoBD y pegar el comando Crear en MySQL, que funciona bien.

¿Alguien más ha encontrado este error? ¿Es solo una configuración de MySQL que necesito cambiar? Estoy usando la plantilla my-innodb-heavy-4G.cnf como mi /etc/my.cnf.

También sé que la sintaxis type ha sido desaprobada por MySQL, y que debe usarse engine (y lo hace si manualmente modifico las instrucciones create). ¿Hay alguna forma de configurar esto en Hibernate?

Gracias

Respuesta

63

Use MySQL5InnoDBDialect en lugar de MySQLInnoDBDialect.

+3

¡Qué leyenda! ¡GRACIAS! –

+0

Muchas gracias. Realmente me ayudó. – n0rm1e

+0

respuesta útil, pero ¿qué pasa con MySQLInnoDBDialect. –

5

El uso de 'MySQL5InnoDBDialect' funciona con 5.1 y 5.5.

0

Después de agregar MySQL5InnoDBDialect, obtuve el mismo error pero con "Engine = InnoDB". Así que agregué MySQL5InnoDBDialect en el archivo de propiedades y eliminé las anotaciones de @Table del archivo del modelo.

0

type está obsoleto y se ha eliminado de las versiones más recientes. Utilice engine=InnoDB

1

En Grails:

cambiado la declaración de dialecto en el DataSource.groovy

Ejemplo:

Uso "dialecto = org.hibernate.dialect.MySQL5InnoDBDialect" en lugar de "dialecto = org. hibernate.dialect.MySQLInnoDBDialect "

Puede utilizar el mismo enfoque para su proyecto, supongo.

Gracias

-1

No meu Caso, instalei o MySQL v5.6.20, e ao rodar minha aplicação Que EE.UU. Hibernate, colocar teve MySQL5InnoDBDialect.

Segue O trecho (persistence.xml) da propiedades de la etiqueta:

<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

Esta no es la versión portuguesa de StackOverflow. – dccarmo

1

Sólo en caso de si ha cambiado a org.hibernate.dialect.MySQL5InnoDBDialect (por ejemplo, en MariaDB) y que sigue recibiendo el error comprobar si el nombre de la tabla (o cualquier otro en la consulta) no es una palabra reservada o un nombre de objeto existente (por ejemplo, 'posición').

Cuestiones relacionadas