create table check2(f1 varchar(20),f2 varchar(20));
crea una tabla con la clasificación predeterminada latin1_general_ci
;
alter table check2 collate latin1_general_cs;
show full columns from check2;
muestra la clasificación individual de las columnas como 'latin1_general_ci'.
Entonces, ¿cuál es el efecto del comando alter table?
Respuestas:
Para cambiar el conjunto de caracteres predeterminado y la clasificación de una tabla, incluidos los de las columnas existentes (tenga en cuenta la cláusula de conversión a ):
Editó la respuesta, gracias a la aparición de algunos comentarios:
y
fuente
utf8_bin
es mejor, no? ¿Cuál es la diferencia entreutf8_bin
yutf8_unicode_ci
?utf8_bin
es sensible autf8_unicode_ci
mayúsculas y minúsculas. Uno no es necesariamente mejor que el otro: use lo que se adapte a sus necesidades.utf8
. Casi nunca es lo que quieres, y a menudo conduce a problemas inesperados. Elutf8
juego de caracteres no es totalmente compatible con UTF-8. Elutf8mb4
conjunto de caracteres es lo que desea si desea UTF-8.MySQL tiene 4 niveles de intercalación: servidor, base de datos, tabla, columna. Si cambia la clasificación del servidor, la base de datos o la tabla, no cambia la configuración de cada columna, pero cambia las clasificaciones predeterminadas.
Por ejemplo, si cambia la clasificación predeterminada de una base de datos, cada nueva tabla que cree en esa base de datos usará esa clasificación, y si cambia la clasificación predeterminada de una tabla, cada columna que cree en esa tabla obtendrá esa clasificación.
fuente
show variables like "collation%";
, por lo que el total es SEIS .Establece la clasificación predeterminada para la tabla; si crea una nueva columna, eso debería clasificarse con latin_general_ci, creo. Intente especificar la clasificación para la columna individual y vea si eso funciona. MySQL tiene un comportamiento realmente extraño con respecto a la forma en que maneja esto.
fuente
puede necesitar cambiar la tabla SCHEMA no solo
(mariaDB 10)
fuente
<database name>
en lugar de<table name>
utf8
, peroutf8mb4
.