sql >> Databáze >  >> RDS >> Mysql

Grails:chyba v syntaxi SQL při změně dialektu hibernace

Proč byste chtěli používat MyISAM??? Nepodporuje cizí klíče ani transakce. A jen zřídka je rychlejší než InnoDB, protože InnoDB používá zámky řádků a MVCC, na rozdíl od zámků MyISAM pro celou tabulku.

Když už to bylo řečeno, můžete to uvést do provozu. Od type musíte používat novější verzi MySQL atribut byl na chvíli zastaralý a nyní není podporován – musíte použít ENGINE namísto. Neexistuje žádný dialekt, který by to podporoval (všimněte si, že org.hibernate.dialect.MySQL5InnoDBDialect dělá správnou věc pro InnoDB), takže si musíte vytvořit vlastní.

Vytvořte tuto třídu v src/groovy nebo src/java (změňte název balíčku a/nebo třídy):

package com.mycompany.myapp

import org.hibernate.dialect.MySQLMyISAMDialect

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

a odkazujte na něj v DataSource.groovy, jak jste ukázali ve své otázce:

dialect = com.mycompany.myapp.MySQL5MyISAMDialect



  1. Jak přidat výchozí omezení do existujících sloupců v tabulce SQL Server - SQL Server / Výukový program TSQL, část 91

  2. Jaký je připojovací řetězec sql, který musím použít pro přístup k localhost\SQLEXPRESS s ověřováním Windows nebo ověřováním SQL?

  3. Jak přidat ID automatického zvýšení podle skupiny v mysql

  4. Oracle číslo na C# desítkové