¿Cómo puedo ver qué colación tiene una tabla? Es decir, quiero ver:
+-----------------------------+
| table | collation |
|-----------------------------|
| t_name | latin_general_ci |
+-----------------------------+
SHOW TABLE STATUS
muestra información sobre una tabla, incluida la intercalación.
Por ejemplo SHOW TABLE STATUS where name like 'TABLE_NAME'
La respuesta anterior es excelente, pero en realidad no proporciona un ejemplo que evite que el usuario tenga que buscar la sintaxis:
show table status like 'test';
¿Dónde test
está el nombre de la tabla?
(Corregido según los comentarios a continuación).
También puede consultar INFORMATION_SCHEMA.TABLES
y obtener la intercalación de una tabla específica:
SELECT TABLE_SCHEMA
, TABLE_NAME
, TABLE_COLLATION
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 't_name';
que da una salida mucho más legible en contraste con la SHOW TABLE STATUS
que contiene mucha información irrelevante.
Tenga en cuenta que la clasificación también se puede aplicar a las columnas (que pueden tener una clasificación diferente a la de la tabla). Para obtener la clasificación de las columnas para una tabla en particular, puede consultar INFORMATION_SCHEMA.COLUMNS
:
SELECT TABLE_SCHEMA
, TABLE_NAME
, COLUMN_NAME
, COLLATION_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 't_name';
Utilice esta consulta:
Obtendrá toda la información relacionada con la tabla.
fuente
...) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1
Supongo que es posible que no muestre la intercalación si se establece en el valor predeterminado para la base de datos en versiones posteriores de mysql / mariadb.utf8
, pero diferentes colacionesutf8_general_ci
vsutf8_unicode_ci
. Esto puede causar mensajes de error comoHY000, 1267, Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='
... que es el mensaje que me trajo a esta página.Este comando describe
fuente