grails 表排序规则 latin_swedish_ci 虽然 db 排序规则是 utf8_general_ci

Posted

技术标签:

【中文标题】grails 表排序规则 latin_swedish_ci 虽然 db 排序规则是 utf8_general_ci【英文标题】:grails table collation latin_swedish_ci although db collation is utf8_general_ci 【发布时间】:2015-10-09 16:32:50 【问题描述】:

我使用默认排序规则 utf8_general_ci 为我的 grails 项目创建了一个数据库,但现在我发现 grails 使用 latin_swedish_ci 创建了所有表。

为什么会这样?如何强制 grails 使用 utf8?

在其他主题中,我发现我需要在 db 连接字符串中添加一些参数,但我已经这样做了。这是我的数据源:

dataSource 
    dialect = "org.hibernate.dialect.mysql5InnoDBDialect"
    driverClassName = "com.mysql.jdbc.Driver"
    username = "root"
    password = ""
    url = "jdbc:mysql://localhost:3306/xxx?autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8"

【问题讨论】:

也许有人对这个问题有任何想法? 4 年后我们遇到了同样的问题。 【参考方案1】:

我的数据源看起来完全一样,并且我的表的排序规则设置为 'utf8_general_ci' 。我的印象是,这需要在数据库服务器本身中配置,通常或每个数据库。

表单将涉及将以下内容添加到您的 my.cnf 文件中:

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

请参阅https://dev.mysql.com/doc/refman/5.6/en/charset-applications.html 了解更多信息。

不过,我通常会做后者。我使用以下语法来创建我的数据库:

DROP DATABASE IF EXISTS $DB_NAME;
CREATE DATABASE $DB_NAME DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

【讨论】:

以上是关于grails 表排序规则 latin_swedish_ci 虽然 db 排序规则是 utf8_general_ci的主要内容,如果未能解决你的问题,请参考以下文章

数据库、表、列排序规则的区别

临时表的默认排序规则

查询以显示所有表及其排序规则

Grails Spring Security 静态规则

Mysql 表排序规则改变

Grails投影忽略MongoDB的排序顺序