0

我正在尝试以 utf-8 语言(希伯来语-阿拉伯语等)保存文本,但它失败了......首先它给了我(????????)所以我把它放在 dataSource.groovy dbCreate = "update" url = "jdbc:mysql://localhost/db_name?useUnicode=yes&characterEncoding=UTF-8" } 我已经转换了整个数据库,它的表也有排序规则 utf-8 和字符集..

它给了我错误说

错误 util.JDBCExceptionReporter - 非法混合排序规则 (latin1_swedish_ci,IMPLICIT) 和 (utf8_general_ci,COERCIBLE) 用于操作 '=' 2012-07-01 21:54:25,969 [http-8080-1] 错误 errors.GrailsExceptionResolver - 非法混合排序规则(latin1_swedish_ci,IMPLICIT)和(utf8_general_ci,COERCIBLE)操作'='java.sql.SQLException:排序规则(latin1_swedish_ci,IMPLICIT)和(utf8_general_ci,COERCIBLE)在com.mysql.jdbc操作'='的非法混合。 SQLError.createSQLException(SQLError.java:1075) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566) 在 com.mysql.jdbc .MysqlIO.sendCommand(MysqlIO.java:1959) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113) 在 com.mysql.jdbc。ConnectionImpl.execSQL(ConnectionImpl.java:2568) 在 com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113) 在 com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2275) 在 com.ehs.GameNewsController $_closure4.doCall(GameNewsController.groovy:27) at com.ehs.GameNewsController$_closure4.doCall(GameNewsController.groovy) at java.lang.Thread.run(Thread.java:680)线程.run(线程.java:680)线程.run(线程.java:680)

所以我做错了什么..

4

3 回答 3

3

该错误清楚地表明存在“latin1_swedish_ci”和“utf8_general_ci”排序规则的混合。请再次尝试检查您在任何表中是否没有任何字段仍在 latin1_swedish_ci COLLATE 中。

于 2012-07-02T07:26:29.513 回答
2

试试 useUnicode=true

 jdbc:mysql://localhost/db_name?useUnicode=true&characterEncoding=UTF-8

并注意添加

dataSource {
    ...
   dialect = org.hibernate.dialect.MySQLDialect
   ...
于 2012-07-01T22:59:46.380 回答
0

在 Linux 上也有同样的问题。将表引擎更改为 InnoDB 帮助了我。

于 2012-11-28T10:42:43.707 回答