2009-04-12 8 views
138
create table check2(f1 varchar(20),f2 varchar(20)); 

crea una tabla con la intercalación predeterminada latin1_general_ci;¿Cómo cambiar la intercalación predeterminada de una tabla?

alter table check2 collate latin1_general_cs; 
show full columns from check2; 

muestra la intercalación individual de las columnas como 'latin1_general_ci'.

Entonces, ¿cuál es el efecto del comando alter table?

+0

posible duplicado de [Cambiar la base de datos de colación] (http://stackoverflow.com/questions/5906585/change-database-collation) –

+0

Es posible que desee alterar la respuesta correcta como yo y muchos otros parecen estar de acuerdo en que el segundo es el correcto. –

+1

@GregMiernicki hecho. – dharm0us

Respuesta

485

Para cambiar el juego de caracteres por defecto y el cotejo de una mesa incluyendo los de las columnas existentes (nota la cláusula convertir a):

alter table <some_table> convert to character set utf8 collate utf8_unicode_ci; 
+24

Exactamente estaba buscando, gracias. Las otras respuestas explican el problema, pero este tiene la solución. – Pablo

+3

Estoy de acuerdo. Esto es definitivamente para lo que fue mi búsqueda. – James

+0

¿qué tal ver? Necesito cambiar para Ver ... –

9

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

+32

Desplácese hacia abajo para resolver el problema – Moak

29

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

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

+4

De hecho, MySQL tiene ** CINCO ** niveles de intercalación, hay una configuración de intercalación predeterminada de nivel de juego de caracteres que muchas personas olvidan. – Devy

+2

También hay intercalación de conexión 'mostrar variables como" colación% ";', por lo que el total es *** SEIS ***. –

0

puede tener que cambiar el esquema no única mesa

ALTER SCHEMA <table name> CONJUNTO DE CARACTERES POR DEFECTO utf8 DEFAULT COLLATE utf8_general_ci;

(MariaDB 10)

+0

'' en lugar de '

' – dnivog

Cuestiones relacionadas