ich eine Grails Web-Anwendung haben und verwenden Mysql, wenn ich persischer String abfragen, habe ich diesen Fehler gesehen:Abfrage mysql Fehler verursacht: Illegal Mix von Sortierungen (latin1_swedish_ci, IMPLIZIT)
ERROR util.JDBCExceptionReporter - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
das ist mein Datenquelle config:
dataSource {
driverClassName = "com.mysql.jdbc.Driver"
dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
username = "user"
password = "pass"
url = "jdbc:mysql://localhost/nicefamilytree?useUnicode=yes&characterEncoding=UTF-8"
}
ich Abfrage mysql Variable (show Variablen wie 'Sortierungs%') und das Ergebnis ist wie folgt:
mysql> show variables like '%collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
ich unten lief Befehl Datenbank charset zu ändern:
ALTER DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci;
aber collation_server nicht ändern und ich habe denselben Fehler in Abfrage.
Der Befehl "Alter" konvertiert keine vorhandenen Tabellen, sondern legt nur den Standardwert für neu erstellte Tabellen fest. siehe http://stackoverflow.com/questions/6115612/how-to-convert-an-entire-mysql-database-characterset-and-collation-to-utf-8 – Abs
'SHOW VARIABLES LIKE 'char%';' und 'SHOW CREATE TABLE'. –