sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

¿Por qué la tabla CHARSET está establecida en utf8mb4 y COLLATION en utf8mb4_unicode_520_ci?

En el pasado, solo existía utf8; en el futuro, utf8mb4 será el conjunto de caracteres predeterminado. ahora utf8mb4 es el conjunto de caracteres predeterminado.

En el pasado, _general_ci fue la intercalación predeterminada; entonces _unicode_ci (Unicode 4.0) era mejor, entonces _unicode_520_ci (Unicode 5.20). En el futuro (MySQL 8.0), el valor predeterminado será _0900_ci_ai (Unicode 9.0).

Mientras tanto, el camino está lleno de baches generados por los errores del pasado de MySQL. Y los diseñadores de WP conducen un gran tanque que no nota los baches.

MySQL 5.6 fue un gran bache que absorbió a muchos usuarios de WP debido a un límite de 767 en los índices junto con los índices de WP en el VARCHAR(255) demasiado largo y la posibilidad de usar utf8mb4 . Ya lo superaste al tener 5.7.17. (Su futuro paso a 8.0 será menos accidentado).

Es decir, las bases de datos/tablas/columnas recién creadas en 5.7.7+ no deberían experimentar el problema 767, pero las cosas migradas desde versiones anteriores (5.5.3+) pueden tener problemas, especialmente si algo hace que cambie a utf8mb4.

¿Qué hacer? Probablemente me quede sin espacio tratando de explicar todas las opciones. Proporcione el historial de los datos, la ruta de actualización (si corresponde), la configuración actual, el ROW_FORMAT de las tablas, el CHARACTER SET y COLLATION de las columnas, la salida de SHOW VARIABLES LIKE 'char%';

¿Dónde deberías estar? Para 5.7.7+, utf8mb4 y utf8mb4_unicode_520_ci donde sea práctico. Ese conjunto de caracteres te da Emoji y todo chino (utf8 no lo hace). Esa colación es la mejor disponible, aunque es posible que le cueste darse cuenta de dónde importa.

Nota:la primera parte del nombre de colación es el único conjunto de caracteres con el que funciona. Eso es utf8_unicode_ci no funciona con utf8mb4 .