如何找出我的 MySQL 中的默认字符集/排序规则 [重复]
Posted
技术标签:
【中文标题】如何找出我的 MySQL 中的默认字符集/排序规则 [重复]【英文标题】:How can I figure out the default charset/collation in my MySQL [duplicate] 【发布时间】:2019-12-28 21:25:15 【问题描述】:我在 Ubuntu 18.04 上使用 mysql 和 MySQL Workbench 8.0+。当我创建一个字符串类型的列时,我将字符集/排序规则保留为默认值。在 MySQL 工作台中,它只是告诉我是 Default Charset
。
我当前的 MySQL 和 Workbench 使用的默认字符集是什么?我该如何解决这个问题?
【问题讨论】:
【参考方案1】:使用SHOW CREATE TABLE
。例如:
CREATE TABLE a (
dflt VARCHAR(11),
cs VARCHAR(11) CHARACTER SET latin1,
cola VARCHAR(11) COLLATE utf8mb4_hungarian_ci,
cc VARCHAR(11) CHARACTER SET latin1 COLLATE latin1_bin,
colb VARCHAR(11) COLLATE latin1_bin
);
SHOW CREATE TABLE a\G
mysql> SHOW CREATE TABLE a\G
*************************** 1. row ***************************
Table: a
Create Table: CREATE TABLE `a` (
`dflt` varchar(11) DEFAULT NULL,
`cs` varchar(11) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL,
`cola` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_hungarian_ci DEFAULT NULL,
`cc` varchar(11) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
`colb` varchar(11) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
注意事项:
大多数列都有明确的字符集和排序规则。 没有 (dflt
) 的那个会从表的 DEFAULTs
继承这些设置。
每个CHARACTER SET
都有一个“默认”排序规则。
每个COLLATE
都与一个CHARACTER SET
相关联,即排序规则名称的第一部分。
(此处未显示):表的DEFAULTs
继承自DATABASE
。
如果你什么都不做,MySQL 8 默认为CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
。
旧版本默认为CHARSET=latin1 COLLATE=latin1_swedish_ci
某些排序规则中的“0900”或“520”指的是 Unicode 标准版本 9.0 和 5.20。您可以由此推断,未来可能会有新的、“更好”的排序规则。
【讨论】:
以上是关于如何找出我的 MySQL 中的默认字符集/排序规则 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在不转换列的情况下更改 MySQL 中的表(默认)排序规则[重复]
字符集和排序规则会影响 MySQL/MariaDB 中的查询性能吗?