Как я могу увидеть, какое сопоставление имеет таблица? т.е. Я хочу увидеть:
+-----------------------------+
| table | collation |
|-----------------------------|
| t_name | latin_general_ci |
+-----------------------------+
Как я могу увидеть, какое сопоставление имеет таблица? т.е. Я хочу увидеть:
+-----------------------------+
| table | collation |
|-----------------------------|
| t_name | latin_general_ci |
+-----------------------------+
SHOW TABLE STATUS
показывает информацию о таблице, включая сопоставление.
Например SHOW TABLE STATUS where name like 'TABLE_NAME'
Приведенный выше ответ великолепен, но на самом деле он не дает примера, который избавляет пользователя от необходимости искать синтаксис:
show table status like 'test';
Где test
— имя таблицы.
(Исправлено в соответствии с комментариями ниже.)
Проверка сопоставления определенной таблицы
Вы можете запросить 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
Используйте этот запрос:
SHOW CREATE TABLE tablename
Вы получите всю информацию, связанную с таблицей.
...) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1
Я предполагаю, что сопоставление может не отображаться, если оно установлено по умолчанию для базы данных в более поздних версиях mysql/mariadb.
- person DeveloperChris; 09.12.2016
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
Если кто-то ищет здесь также способ проверить сопоставление всей базы данных:
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)