MySQL - 什么是utf8_general_mysql500_ci?

Ale*_*ley 7 mysql collation mysql-5.5

我刚看到MySQL 5.5提供utf8_general_mysql500_ci了整理.

与其他校对有什么区别utf8_general_ci

我应该更好用utf8_general_mysql500_ci吗?

egg*_*yal 9

MySQL 5.5.21中的更改​​所述:

  • utf8_general_mysql500_ciucs2_general_mysql500_ci归类已添加该保留的行为utf8_general_ci,并ucs2_general_ci从以前到5.1.24的MySQL版本.错误#27877更正了原始排序规则中的错误,但为包含德语'ß'LATIN SMALL LETTER SHARP S的列引入了不兼容性.(作为修复的结果,该字符比较等于与之前比较的字符不同.)症状从5.1.24版本升级到MySQL 5.1.24或更新版本后出现的问题是CHECK TABLE产生此错误:

    Table upgrade required.
    Please do "REPAIR TABLE `t`" or dump/reload to fix it!
    

    不幸的是,REPAIR TABLE无法解决问题.新的排序规则允许在MySQL 5.1.24之前创建的旧表升级到当前版本的MySQL.

    要在保留表文件的二进制升级后转换受影响的表,请更改表以使用新的排序规则.假设该表t1包含一个或多个有问题的utf8列.要在表级转换表,请使用如下语句:

    ALTER TABLE t1
    CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_mysql500_ci;
    
    Run Code Online (Sandbox Code Playgroud)

    要在特定于列的基础上应用更改,请使用这样的语句(确保重复最初指定的列定义,但COLLATE子句除外):

    ALTER TABLE t1
    MODIFY c1 CHAR(N) CHARACTER SET utf8 COLLATE utf8_general_mysql500_ci;
    
    Run Code Online (Sandbox Code Playgroud)

    要使用转储和重新加载过程升级表,请使用mysqldump转储表,修改CREATE TABLE转储文件中的语句以使用新的排序规则,然后重新加载表.

    进行适当的更改后,CHECK TABLE应报告没有错误.

    有关更多信息,请参阅检查是否必须重建表或索引,以及重建或修复表或索引.(Bug#43593,Bug#11752408)