mysql - 如何找出 MySQL 中的默认字符集/排序规则

标签 mysql database character-encoding mysql-workbench collation

我在 Ubuntu 18.04 上使用 MySQL 和 MySQL Workbench 8.0+。当我创建字符串类型的列时,我将字符集/排序规则保留为默认值。在 MySQL Workbench 中,它只是告诉我就是它 Default Charset

我当前的 MySQL 和 Workbench 使用的默认字符集是什么?我该如何解决这个问题?

最佳答案

使用显示创建表。例如:

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) 会从表的 DEFAULT 继承这些设置。
  • 每个字符集都有一个“默认”排序规则。
  • 每个COLLATE 都与一个CHARACTER SET 相关联,即排序规则名称的第一部分。
  • (此处未显示):表的 DEFAULT 继承自 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 中的默认字符集/排序规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57628217/

相关文章:

mysql - 设计考虑 : One database user connection v. s。多数据库用户连接

mysql - 从同一个表中选择相同的数据,只是将条件作为不同的列

mysql - 如何在MySQL数据库中定义一个表来存储JSON对象?

R- 删除字符串中的重音符号

character-encoding - MockMvc:将 MockHttpServletResponse 的默认字符编码从 ISO-8859-1 更改为 UTF-8

php - utf8mb4_unicode_ci 与 utf8mb4_bin

java - 获取特定列 JPA、Spring boot

mysql - 如何对连接表中最近 12 个月的数据求和

mysql - 使用 NoSql?如果是的话怎么办?

database - postgresql-简单 : get a list of table names in a database