mysql服务器排序规则是my.cnf中的utf8_general_ci
我正在为数据库使用 utf8_general_ci 归类,现在我已经使用 utf8_unicode_ci 归类创建了几个表 同一个数据库。
现在我想将 utf8_unicode_ci 用于服务器/数据库/表/字段。为了首先做到这一点,我需要将服务器的排序规则更改为 utf8_unicode_ci 然后是数据库、表和字段。
我的问题是我已经使用 utf8_general_ci 将数据存储在表中,我是否可以保持原样而不对数据做任何操作,或者我是否需要进行任何类型的转换。
另一件事是,如您所见,服务器级别的排序规则是 utf8_general_ci,但表和字段级别的排序规则是 utf8_unicode_ci,因此当我从这些表中存储和检索数据时,根据我当前的设置,mysql 使用什么排序规则?
谢谢。
最佳答案
“服务器级别”排序规则毫无意义。
服务器和数据库级别的字符集(和排序规则)仅用作表(和数据库)创建的默认值。
- 比如说,如果您在创建数据库时没有提供任何排序规则,它将使用服务器排序规则创建。但是如果你这样做了 - 将使用提供的一个并且服务器整理根本不会干扰。
- 如果您没有在表定义中提供任何排序规则,则将使用数据库排序规则创建表。但如果您这样做 - 将使用提供的一个,服务器和数据库整理都不会影响您的查询。
只有表和字段级别的排序规则才是重要的。
if i already have data in tables stored using utf8_general_ci, can i just keep as it is
是的。您的数据库中可以有包含任何字符集的表。
关于php - 与 utf8_general_ci 和 utf8_unicode_ci 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32062985/