我怎样才能找出 MySQL 中的默认值 charset/collation
How can I figure out the default charset/collation in my MySQL
我在 Ubuntu 18.04 上使用 MySQL 和 MySQL Workbench 8.0+。当我创建一个字符串类型的列时,我将 charset/collation 保留为默认值。在 MySQL workbench 中,它只是告诉我就是 Default Charset
。
我当前的 MySQL 和 Workbench 使用的默认字符集是什么?我该如何解决这个问题?
使用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
) 的 table 从 DEFAULTs
继承那些设置。
- 每个
CHARACTER SET
都有一个 "default" 排序规则。
- 每个
COLLATE
只关联一个 CHARACTER SET
,即排序规则名称的第一部分。
- (此处未显示):table 的
DEFAULTs
继承自 DATABASE
。
- MySQL 8 默认为
CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
如果你什么都不做。
- 旧版本默认为
CHARSET=latin1 COLLATE=latin1_swedish_ci
- 某些排序规则中的“0900”或“520”是指 Unicode 标准版本 9.0 和 5.20。您可以由此推断,将来可能会有新的 "better" 排序规则。
我在 Ubuntu 18.04 上使用 MySQL 和 MySQL Workbench 8.0+。当我创建一个字符串类型的列时,我将 charset/collation 保留为默认值。在 MySQL workbench 中,它只是告诉我就是 Default Charset
。
我当前的 MySQL 和 Workbench 使用的默认字符集是什么?我该如何解决这个问题?
使用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
) 的 table 从DEFAULTs
继承那些设置。 - 每个
CHARACTER SET
都有一个 "default" 排序规则。 - 每个
COLLATE
只关联一个CHARACTER SET
,即排序规则名称的第一部分。 - (此处未显示):table 的
DEFAULTs
继承自DATABASE
。 - MySQL 8 默认为
CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
如果你什么都不做。 - 旧版本默认为
CHARSET=latin1 COLLATE=latin1_swedish_ci
- 某些排序规则中的“0900”或“520”是指 Unicode 标准版本 9.0 和 5.20。您可以由此推断,将来可能会有新的 "better" 排序规则。