2016-08-19 55 views
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; 

但collat​​ion_server的沒有改變,我有查詢相同的錯誤。

+0

Alter命令不轉換現有表,它只設置新創建表的默認值。參見http://stackoverflow.com/questions/6115612/how-to-convert-an-entire-mysql-database-characterset-and-collat​​ion-to-utf-8 – Abs

+0

'SHOW VARIABLES LIKE'char%';'和'SHOW CREATE TABLE'。 –

回答

1

更改DataSourceConfig如下:

dataSource { 
     driverClassName = "com.mysql.jdbc.Driver" 
     dialect = "org.hibernate.dialect.MySQL5InnoDBDialect" 
     username = "user" 
     password = "pass" 
     url = "jdbc:mysql://localhost/nicefamilytree?useUnicode=yes 
     } 

不要做任何轉換,只是救你做了什麼。

不知道它是否有幫助!

相關問題