1
我有一個Grails Web應用程序和使用MySQL,當我查詢字符串波斯,我已經看到了這個錯誤:查詢的MySQL造成錯誤:排序規則的非法組合(latin1_swedish_ci,隱含的)
ERROR util.JDBCExceptionReporter - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
這是我的數據源的配置:
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"
}
我查詢MySQL的變量(變量顯示像 '歸類%')和結果是這樣的:
mysql> show variables like '%collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
我跑以下命令來修改數據庫的字符集:
ALTER DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci;
但collation_server的沒有改變,我有查詢相同的錯誤。
Alter命令不轉換現有表,它只設置新創建表的默認值。參見http://stackoverflow.com/questions/6115612/how-to-convert-an-entire-mysql-database-characterset-and-collation-to-utf-8 – Abs
'SHOW VARIABLES LIKE'char%';'和'SHOW CREATE TABLE'。 –