Pregunta MySQL 5.5.9 y el error de creación de la tabla Hibernate en TYPE


Al tratar de recrear mi base de datos usando Hibernate + Spring, el SQL que get's genera anexa "type=InnoDB" al final de cada declaración de creación. Esto parece causar problemas con mi configuración de MySQL5.5.9. Produce el siguiente error:

Usted tiene un error en su sintaxis SQL; revise el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca de 'type = InnoDB' en la línea 1

Si elimino manualmente el tipo = InnoBD y pego el comando create en MySQL, funciona bien.

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

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

Gracias


25
2018-03-08 10:39


origen


Respuestas:


Utilizar MySQL5InnoDBDialect en lugar de MySQLInnoDBDialect.


66
2018-03-08 10:42



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


5
2017-09-09 19:55



En Grails:

Cambiar la instrucción dialecto en DataSource.groovy

Ejemplo:

Utilice "dialect = org.hibernate.dialect.MySQL5InnoDBDialect" en lugar de "dialect = org.hibernate.dialect.MySQLInnoDBDialect"

Puede utilizar el mismo enfoque para su proyecto, supongo.

Gracias


1
2017-07-30 07:23



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


1
2017-11-27 00:09



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
2018-01-22 07:30



type está en desuso y se eliminó de las versiones más recientes. Utilizar engine=InnoDB


0
2017-07-08 15:37



No meu caso, instalei o MySQL v5.6.20, e ao rodar minha aplicação que usa Hibernate, teve colocar MySQL5InnoDBDialect.

Segue o trecho (persistence.xml) da tag properties:

<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>

-1
2017-08-11 16:58