【问题标题】:How can I figure out the default charset/collation in my MySQL [duplicate]如何找出我的 MySQL 中的默认字符集/排序规则 [重复]
【发布时间】:2019-12-28 21:25:15
【问题描述】:

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

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

【问题讨论】:

    标签: mysql database character-encoding mysql-workbench collation


    【解决方案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。您可以由此推断,未来可能会有新的、“更好”的排序规则。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-19
      • 2012-10-26
      • 2012-09-01
      • 2013-12-19
      • 1970-01-01
      • 2023-03-17
      • 2022-01-16
      • 1970-01-01
      相关资源
      最近更新 更多