【问题标题】:mysql check collation of a tablemysql检查表的排序规则
【发布时间】:2011-04-19 10:11:33
【问题描述】:

如何查看表格的排序规则? IE。我想看:

+-----------------------------+
|  table  |     collation     |
|-----------------------------|
| t_name  |  latin_general_ci |
+-----------------------------+

【问题讨论】:

    标签: mysql collation


    【解决方案1】:

    SHOW TABLE STATUS 显示有关表的信息,包括排序规则。

    例如SHOW TABLE STATUS where name like 'TABLE_NAME'

    【讨论】:

      【解决方案2】:

      上面的答案很好,但它实际上并没有提供一个让用户不必查找语法的示例:

      show table status like 'test';

      test 是表名。

      (根据下面的 cmets 更正。)

      【讨论】:

        【解决方案3】:

        检查特定表的排序规则

        您可以查询INFORMATION_SCHEMA.TABLES 并获取特定表的排序规则:

        SELECT TABLE_SCHEMA
            , TABLE_NAME
            , TABLE_COLLATION 
        FROM INFORMATION_SCHEMA.TABLES
        WHERE TABLE_NAME = 't_name';
        

        与包含大量不相关信息的SHOW TABLE STATUS 相比,它提供了更具可读性的输出。


        检查列的排序规则

        请注意,排序规则也可以应用于列(其排序规则可能与表本身不同)。要获取特定表的列排序规则,您可以查询INFORMATION_SCHEMA.COLUMNS

        SELECT TABLE_SCHEMA 
            , TABLE_NAME 
            , COLUMN_NAME 
            , COLLATION_NAME 
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = 't_name';
        

        更多详情可以参考文章How to Check and Change the Collation of MySQL Tables

        【讨论】:

        • 适用于 mariaDB 10.4
        【解决方案4】:

        使用这个查询:

        SHOW CREATE TABLE tablename
        

        您将获得与表格相关的所有信息。

        【讨论】:

        • SHOW CREATE TABLE 将不显示排序规则。您必须如上所述使用 SHOW TABLE STATUS。
        • 在 mysql 5.5.52 中为我工作。 ...) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1我的猜测是,如果在更高版本的mysql/mariadb中将其设置为数据库的默认值,它可能不会显示排序规则。
        • @DeveloperChris 您显示的是字符集,而不是排序规则。两个表可能具有相同的字符集utf8,但不同的排序规则utf8_general_ciutf8_unicode_ci。这可能会导致错误消息,例如 HY000, 1267, Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='... 这是将我带到此页面的消息。
        【解决方案5】:

        检查整个数据库的排序规则

        如果有人在这里寻找检查整个数据库的排序规则的方法:

        1. use mydatabase;(其中mydatabase 是您要检查的数据库的名称)
        2. SELECT @@character_set_database, @@collation_database;

        您应该会看到如下结果:

        +--------------------------+----------------------+
        | @@character_set_database | @@collation_database |
        +--------------------------+----------------------+
        | utf8mb4                  | utf8mb4_unicode_ci   |
        +--------------------------+----------------------+
        1 row in set (0.00 sec)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-02-13
          • 2022-08-08
          • 2011-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-19
          • 1970-01-01
          相关资源
          最近更新 更多