sql >> Database >  >> RDS >> Mysql

Grails:fout in SQL-syntaxis bij het wijzigen van het hibernate-dialect

Waarom zou je MyISAM willen gebruiken??? Het ondersteunt geen externe sleutels of transacties. En het is zelden sneller dan InnoDB, aangezien InnoDB rijvergrendelingen en MVCC gebruikt, in tegenstelling tot de volledige tafelvergrendelingen van MyISAM.

Dat gezegd hebbende, kunt u dit laten werken. U moet een nieuwere versie van MySQL gebruiken sinds het type attribuut is een tijdje verouderd en wordt nu niet ondersteund - je moet ENGINE gebruiken in plaats van. Er is geen dialect dat dit ondersteunt (merk op dat org.hibernate.dialect.MySQL5InnoDBDialect doet het juiste voor InnoDB), dus je moet er zelf een maken.

Maak deze klasse aan in src/groovy of src/java (wijzig de naam van het pakket en/of de klasse):

package com.mycompany.myapp

import org.hibernate.dialect.MySQLMyISAMDialect

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

en verwijs ernaar in DataSource.groovy zoals je liet zien in je vraag:

dialect = com.mycompany.myapp.MySQL5MyISAMDialect



  1. De eenvoudigste manier om meerdere spaties toe te voegen aan een string in MySQL - SPACE()

  2. Je eigen TinyURL maken

  3. Lighty Inkoopavontuur

  4. MySQL Workbench:hoe de verbinding levend te houden