Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Grails:erro na sintaxe SQL ao alterar o dialeto de hibernação


Por que você quer usar MyISAM??? Não suporta chaves estrangeiras ou transações. E raramente é mais rápido que o InnoDB, pois o InnoDB usa bloqueios de linha e MVCC, em oposição aos bloqueios de tabela completa do MyISAM.

Dito isso, você pode fazer isso funcionar. Você deve estar usando uma versão mais recente do MySQL, pois o type O atributo ficou obsoleto por um tempo e agora não é suportado - você precisa usar ENGINE em vez de. Não há dialeto que suporte isso (observe que org.hibernate.dialect.MySQL5InnoDBDialect faz a coisa certa para o InnoDB), então você precisa criar o seu próprio.

Crie esta classe em src/groovy ou src/java (mude o pacote e/ou nome da classe):
package com.mycompany.myapp

import org.hibernate.dialect.MySQLMyISAMDialect

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

e faça referência a ele em DataSource.groovy como você mostrou em sua pergunta:
dialect = com.mycompany.myapp.MySQL5MyISAMDialect