Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Grails:Fehler in der SQL-Syntax beim Ändern des Hibernate-Dialekts

Warum sollten Sie MyISAM verwenden??? Es unterstützt keine Fremdschlüssel oder Transaktionen. Und es ist selten schneller als InnoDB, da InnoDB Zeilensperren und MVCC verwendet, im Gegensatz zu MyISAMs Sperren für vollständige Tabellen.

Allerdings können Sie dies zum Laufen bringen. Sie müssen seit type eine neuere Version von MySQL verwenden Das Attribut war eine Zeit lang veraltet und wird jetzt nicht mehr unterstützt - Sie müssen ENGINE verwenden stattdessen. Es gibt keinen Dialekt, der dies unterstützt (beachten Sie, dass org.hibernate.dialect.MySQL5InnoDBDialect tut das Richtige für InnoDB), also müssen Sie Ihre eigene erstellen.

Erstellen Sie diese Klasse in src/groovy oder src/java (ändern Sie den Paket- und/oder Klassennamen):

package com.mycompany.myapp

import org.hibernate.dialect.MySQLMyISAMDialect

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

und verweisen Sie in DataSource.groovy darauf, wie Sie in Ihrer Frage gezeigt haben:

dialect = com.mycompany.myapp.MySQL5MyISAMDialect