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

Graals:fejl i SQL-syntaks ved ændring af dvaledialekten

Hvorfor vil du bruge MyISAM??? Det understøtter ikke udenlandske nøgler eller transaktioner. Og det er sjældent hurtigere end InnoDB, da InnoDB bruger rækkelåse og MVCC i modsætning til MyISAM's fuldbordslåse.

Når det er sagt, kan du få det til at virke. Du skal bruge en nyere version af MySQL siden type attribut blev forældet i et stykke tid og er nu ikke understøttet - du skal bruge ENGINE i stedet. Der er ingen dialekt, der understøtter dette (bemærk at org.hibernate.dialect.MySQL5InnoDBDialect gør det rigtige for InnoDB), så du skal oprette din egen.

Opret denne klasse i src/groovy eller src/java (ændre pakken og/eller klassenavnet):

package com.mycompany.myapp

import org.hibernate.dialect.MySQLMyISAMDialect

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

og referer til det i DataSource.groovy, som du viste i dit spørgsmål:

dialect = com.mycompany.myapp.MySQL5MyISAMDialect



  1. Android SQLite-opdateringsrækken virker ikke

  2. DNA vs moderne sikkerhedskopieringsmetoder:Fremtiden for datalagring

  3. Oracle Update Query ved hjælp af Join

  4. Løsning til ikke at udføre en DML-handling i en forespørgsel?