¿Cómo cambiar la intercalación predeterminada de una tabla?

Resuelto simplfuzz asked hace 15 años • 4 respuestas
create table check2(f1 varchar(20),f2 varchar(20));

crea una tabla con la intercalació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 alterar tabla?

simplfuzz avatar Apr 13 '09 01:04 simplfuzz
Aceptado

Para cambiar el juego de caracteres predeterminado y la clasificación de una tabla, incluidas las de las columnas existentes (tenga en cuenta la cláusula de conversión a ):

alter table <some_table> convert to character set utf8mb4 collate utf8mb4_unicode_ci;

Editó la respuesta, gracias a la provocación de algunos comentarios:

Debería evitar recomendar utf8. Casi nunca es lo que quieres y, a menudo, genera líos inesperados. El juego de caracteres utf8 no es totalmente compatible con UTF-8. El juego de caracteres utf8mb4 es lo que desea si desea UTF-8. – Rich Remer el 28 marzo, 2018 en el 03:41

y

Eso parece bastante importante, me alegro de leer los comentarios y gracias @RichRemer. Nikki, creo que deberías editar eso en tu respuesta considerando cuántas vistas obtiene. Consulte aquí https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8.html y aquí ¿Cuál es la diferencia entre los conjuntos de caracteres utf8mb4 y utf8 en MySQL? – Paulpro 12 de marzo a las 17:46

Nikki Erwin Ramirez avatar Mar 29 '2011 07:03 Nikki Erwin Ramirez

MySQL tiene 4 niveles de intercalación: servidor, base de datos, tabla, columna. Si cambia la intercalación del servidor, base de datos o tabla, no cambia la configuración de cada columna, pero cambia las intercalaciones predeterminadas.

Por ejemplo, si cambia la clasificación predeterminada de una base de datos, cada nueva tabla que cree en esa base de datos utilizará esa clasificación, y si cambia la clasificación predeterminada de una tabla, cada columna que cree en esa tabla obtendrá esa clasificación.

fredrik avatar Apr 12 '2009 19:04 fredrik

Establece la intercalación predeterminada para la tabla; Si crea una nueva columna, debería cotejarse con latin_general_ci, creo. Intente especificar la intercalación para la columna individual y vea si funciona. MySQL tiene un comportamiento realmente extraño en cuanto a la forma en que maneja esto.

Don Werve avatar Apr 12 '2009 18:04 Don Werve