Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Grails:błąd w składni SQL przy zmianie dialektu hibernacji

Dlaczego chcesz używać MyISAM??? Nie obsługuje kluczy obcych ani transakcji. I rzadko jest szybszy niż InnoDB, ponieważ InnoDB używa blokad wierszy i MVCC, w przeciwieństwie do blokad pełnej tabeli MyISAM.

Powiedziawszy to, możesz sprawić, że to zadziała. Musisz używać nowszej wersji MySQL, ponieważ type atrybut był przestarzały przez jakiś czas i nie jest teraz obsługiwany - musisz użyć ENGINE zamiast. Nie ma dialektu obsługującego to (zauważ, że org.hibernate.dialect.MySQL5InnoDBDialect robi właściwą rzecz dla InnoDB), więc musisz stworzyć własny.

Utwórz tę klasę w src/groovy lub src/java (zmień nazwę pakietu i/lub klasy):

package com.mycompany.myapp

import org.hibernate.dialect.MySQLMyISAMDialect

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

i odnieś się do niego w DataSource.groovy, jak pokazałeś w swoim pytaniu:

dialect = com.mycompany.myapp.MySQL5MyISAMDialect



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyczyścić ekran w konsoli MySQL?

  2. Czy tabela może mieć wiele kluczy podstawowych?

  3. Czy klejnot dm_mysql_adapter Datamappera jest obsługiwany w systemie Windows?

  4. PHP / PDO :SQl, aby znaleźć wiersz zawierający wartość ciągu

  5. Zaawansowane łączenie MySQL. Przyspieszenie zapytania