Mysql
 sql >> Database >  >> RDS >> Mysql

Grails:errore nella sintassi SQL durante la modifica del dialetto di ibernazione

Perché vorresti usare MyISAM??? Non supporta chiavi o transazioni esterne. E raramente è più veloce di InnoDB poiché InnoDB utilizza i blocchi di riga e MVCC, al contrario dei blocchi di tabelle complete di MyISAM.

Detto questo, puoi farlo funzionare. Devi utilizzare una versione più recente di MySQL dal type l'attributo è stato ritirato per un po' e ora non è supportato:devi usare ENGINE invece. Non esiste un dialetto che lo supporti (nota che org.hibernate.dialect.MySQL5InnoDBDialect fa la cosa giusta per InnoDB), quindi devi crearne uno tuo.

Crea questa classe in src/groovy o src/java (cambia il pacchetto e/o il nome della classe):

package com.mycompany.myapp

import org.hibernate.dialect.MySQLMyISAMDialect

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

e fai riferimento a DataSource.groovy come hai mostrato nella tua domanda:

dialect = com.mycompany.myapp.MySQL5MyISAMDialect