【问题标题】:Confusion with utf8_general_ci & utf8_unicode_ci混淆 utf8_general_ci 到 utf8_unicode_ci
【发布时间】:2015-11-10 20:00:31
【问题描述】:

Mysql server collat​​ion is utf8_general_ci in my.cnf

我正在为数据库使用 utf8_general_ci 排序规则,现在我创建了几个带有 utf8_unicode_ci 排序规则的表 同一个数据库。

现在我想将 utf8_unicode_ci 用于服务器/数据库/表/字段。为了做到这一点,我首先需要将服务器的排序规则更改为 utf8_unicode_ci 然后是数据库、表和字段。

我的问题是我已经有使用 utf8_general_ci 存储的表中的数据,我可以保持原样而不对数据做任何事情还是需要做任何类型的转换。

另一件事是,正如您所见,服务器级别的排序规则是 utf8_general_ci,但在表和字段级别是 utf8_unicode_ci,所以在我当前的设置中,当我从这些表中存储和检索数据时,mysql 使用什么排序规则?

谢谢。

【问题讨论】:

    标签: php mysql collation


    【解决方案1】:

    “服务器级别”排序规则没有任何意义。
    服务器和数据库级别的字符集(和排序规则)仅作为表(和数据库)创建的默认值。

    • 比如说,如果您在创建数据库时没有提供任何排序​​规则,它将使用服务器排序规则创建。但是,如果您这样做 - 将使用提供的一个,并且服务器排序规则根本不会干扰。
    • 如果您没有在表定义中提供任何排序​​规则,则将使用数据库排序规则创建表。但如果您这样做 - 将使用提供的一个,并且服务器和数据库排序规则都不会影响您的查询。

    只有表和字段级别的排序规则很重要。

    如果我已经在使用 utf8_general_ci 存储的表中有数据,我可以保持原样吗

    是的。您可以在数据库中拥有任何字符集的表。

    【讨论】:

    • 谢谢 .. 带有 utf8_general_ci 的表中的现有数据呢?我可以在不进行任何转换的情况下继续使用它吗?我在连接数据库时使用 utf8 字符集。
    猜你喜欢
    • 2018-01-19
    • 2015-07-28
    • 2012-03-01
    • 1970-01-01
    • 2011-04-27
    • 2010-11-05
    相关资源
    最近更新 更多