【发布时间】:2011-04-19 10:11:33
【问题描述】:
如何查看表格的排序规则? IE。我想看:
+-----------------------------+
| table | collation |
|-----------------------------|
| t_name | latin_general_ci |
+-----------------------------+
【问题讨论】:
如何查看表格的排序规则? IE。我想看:
+-----------------------------+
| table | collation |
|-----------------------------|
| t_name | latin_general_ci |
+-----------------------------+
【问题讨论】:
SHOW TABLE STATUS 显示有关表的信息,包括排序规则。
例如SHOW TABLE STATUS where name like 'TABLE_NAME'
【讨论】:
上面的答案很好,但它实际上并没有提供一个让用户不必查找语法的示例:
show table status like 'test';
test 是表名。
(根据下面的 cmets 更正。)
【讨论】:
检查特定表的排序规则
您可以查询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
【讨论】:
使用这个查询:
SHOW CREATE TABLE tablename
您将获得与表格相关的所有信息。
【讨论】:
...) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1我的猜测是,如果在更高版本的mysql/mariadb中将其设置为数据库的默认值,它可能不会显示排序规则。
utf8,但不同的排序规则utf8_general_ci 与utf8_unicode_ci。这可能会导致错误消息,例如 HY000, 1267, Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='... 这是将我带到此页面的消息。
如果有人在这里也寻找检查整个数据库的排序规则的方法:
use mydatabase;(其中mydatabase 是您要检查的数据库的名称)SELECT @@character_set_database, @@collation_database;您应该会看到如下结果:
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_unicode_ci |
+--------------------------+----------------------+
1 row in set (0.00 sec)
【讨论】: