sql >> Databasteknik >  >> RDS >> Mysql

Grails:fel i SQL-syntax vid ändring av vilolägesdialekt

Varför skulle du vilja använda MyISAM??? Det stöder inte främmande nycklar eller transaktioner. Och det är sällan snabbare än InnoDB eftersom InnoDB använder radlås och MVCC, i motsats till MyISAMs fullbordslås.

Med det sagt kan du få det här att fungera. Du måste använda en nyare version av MySQL sedan type attribut föråldrades ett tag och stöds nu inte - du måste använda ENGINE istället. Det finns ingen dialekt som stöder detta (observera att org.hibernate.dialect.MySQL5InnoDBDialect gör rätt för InnoDB) så du måste skapa din egen.

Skapa den här klassen i src/groovy eller src/java (ändra paketet och/eller klassnamnet):

package com.mycompany.myapp

import org.hibernate.dialect.MySQLMyISAMDialect

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

och referera till det i DataSource.groovy som du visade i din fråga:

dialect = com.mycompany.myapp.MySQL5MyISAMDialect



  1. Uppdatera mysql-tabellen med vald fråga från en annan databas

  2. extern databas med Adobe CQ5?

  3. MySQL-motsvarighet till Oracles SEQUENCE.NEXTVAL

  4. Hur får jag det aktuella året med SQL på Oracle?