查询mysql导致错误:非法混合排序规则(latin1_swedish_ci,IMPLICIT)

时间:2016-08-19 13:01:51

标签: mysql grails character-encoding

我有一个grails web应用程序并使用Mysql,当我查询波斯语字符串时,我看到了这个错误:

echo '<td class="tab"><a href="#"><b>' . $row["marca"] . '</b></a></td>'; 

这是我的数据源配置:

ERROR util.JDBCExceptionReporter  - Illegal mix of collations        (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

我查询mysql变量(显示'collat​​ion%'等变量),结果如下:

        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> show variables like '%collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | utf8_general_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+

但是collat​​ion_server没有改变,我在查询中也有同样的错误。

1 个答案:

答案 0 :(得分:1)

更改您的DataSourceConfig,如下所示:

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

不要做任何转换,只保存你得到的内容。

不确定是否有帮助!!