如何更改表的默认排序规则?

dha*_*0us 177 mysql sql collation

create table check2(f1 varchar(20),f2 varchar(20));
Run Code Online (Sandbox Code Playgroud)

使用默认排序规则创建表格latin1_general_ci;

alter table check2 collate latin1_general_cs;
show full columns from check2;
Run Code Online (Sandbox Code Playgroud)

将列的各个排序规则显示为"latin1_general_ci".

然后alter table命令的作用是什么?

Nik*_*rez 577

要更改表的默认字符集和排序规则,包括现有列的表(请注意convert to子句):

alter table <some_table> convert to character set utf8mb4 collate utf8mb4_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

  • 我正在寻找,谢谢.其他答案解释了问题,但这个问题有解决方案. (25认同)
  • @JasomDotnet你现在应该使用utf8mb4_unicode_ci http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci (11认同)
  • 更改默认字符集有什么含义?它是否更新现有数据,因此需要运行表并进行更新,锁定等等? (4认同)
  • 我同意.这绝对是我的搜索. (3认同)
  • 应该避免推荐`utf8`。它几乎从来都不是您想要的,并且经常导致意想不到的混乱。`utf8`字符集与UTF-8不完全兼容。如果需要UTF-8,则需要`utf8mb4`字符集。 (2认同)

fre*_*rik 33

MySQL有4级排序规则:服务器,数据库,表,列.如果更改服务器,数据库或表的排序规则,则不会更改每列的设置,但会更改默认排序规则.

例如,如果更改数据库的默认排序规则,则在该数据库中创建的每个新表都将使用该排序规则,如果更改表的默认排序规则,则在该表中创建的每个列都将获得该排序规则.

  • 事实上,MySQL有**五个级别的排序规则,有一个字符集级别的默认排序设置,很多人都忘记了. (7认同)
  • 还有连接校对`显示变量,如"collat​​ion%";`,所以总计是***SIX***. (5认同)

Don*_*rve 9

它设置表的默认排序规则; 如果你创建一个新列,那应该与latin_general_ci进行整理 - 我想.尝试为单个列指定排序规则,看看是否有效.MySQL在处理这个问题的方式上有一些非常奇怪的行为.