sql >> Base de Datos >  >> RDS >> Mysql

Grails:error en la sintaxis SQL al cambiar el dialecto de hibernación

¿Por qué querrías usar MyISAM? No admite claves foráneas ni transacciones. Y rara vez es más rápido que InnoDB, ya que InnoDB usa bloqueos de fila y MVCC, a diferencia de los bloqueos de tabla completa de MyISAM.

Habiendo dicho eso, puedes hacer que esto funcione. Debe estar usando una versión más nueva de MySQL ya que type El atributo estuvo obsoleto por un tiempo y ahora no es compatible; debe usar ENGINE en cambio. No hay ningún dialecto que admita esto (tenga en cuenta que org.hibernate.dialect.MySQL5InnoDBDialect hace lo correcto para InnoDB), por lo que debe crear el suyo propio.

Cree esta clase en src/groovy o src/java (cambie el paquete y/o el nombre de la clase):

package com.mycompany.myapp

import org.hibernate.dialect.MySQLMyISAMDialect

class MySQL5MyISAMDialect extends MySQLMyISAMDialect {
   String getTableTypeString() {
      " ENGINE=MyISAM"
   }
}

y consúltelo en DataSource.groovy como mostró en su pregunta:

dialect = com.mycompany.myapp.MySQL5MyISAMDialect