mysql проверить сортировку таблицы

Как я могу увидеть, какое сопоставление имеет таблица? т.е. Я хочу увидеть:

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

person Scott    schedule 30.09.2010    source источник


Ответы (5)


SHOW TABLE STATUS показывает информацию о таблице, включая сопоставление.

Например SHOW TABLE STATUS where name like 'TABLE_NAME'

person Lekensteyn    schedule 30.09.2010

Приведенный выше ответ великолепен, но на самом деле он не дает примера, который избавляет пользователя от необходимости искать синтаксис:

show table status like 'test';

Где test — имя таблицы.

(Исправлено в соответствии с комментариями ниже.)

person Moustafa Elqabbany    schedule 16.02.2015

Проверка сопоставления определенной таблицы

Вы можете запросить 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';

Для получения более подробной информации вы можете обратиться к статье Как проверить и изменить сортировку таблиц MySQL

person Giorgos Myrianthous    schedule 24.09.2018
comment
Работает для mariaDB 10.4 - person Tarator; 29.11.2019

Используйте этот запрос:

SHOW CREATE TABLE tablename

Вы получите всю информацию, связанную с таблицей.

person Rizwan Siddiquee    schedule 13.07.2015
comment
SHOW CREATE TABLE не будет отображать сортировку. Вы должны использовать SHOW TABLE STATUS, как описано выше. - person KateYoak; 11.04.2016
comment
У меня работает в mysql 5.5.52. ...) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1 Я предполагаю, что сопоставление может не отображаться, если оно установлено по умолчанию для базы данных в более поздних версиях mysql/mariadb. - person DeveloperChris; 09.12.2016
comment
@DeveloperChris Вы показываете кодировку, а не сопоставление. Две таблицы могут иметь одинаковую кодировку utf8, но разные параметры сортировки utf8_general_ci и utf8_unicode_ci. Это может вызвать сообщения об ошибках, такие как HY000, 1267, Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='... сообщение, которое привело меня на эту страницу. - person Dewi Morgan; 24.09.2018

Проверить сопоставление всей базы данных

Если кто-то ищет здесь также способ проверить сопоставление всей базы данных:

  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)
person Qback    schedule 29.06.2021