mysql - sql_latin1_general_cp1_ci_as - ¿Cómo cambiar la intercalación predeterminada de una tabla?
mysql select collation of column (4)
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.
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 intercalación individual de las columnas como ''latin1_general_ci''.
Entonces, ¿cuál es el efecto del comando alter table?
MySQL tiene 4 niveles de colació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 tabla nueva 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.
Para cambiar el conjunto de caracteres predeterminado y la intercalación de una tabla, incluidos los de las columnas existentes (tenga en cuenta la cláusula convertir a ):
alter table <some_table> convert to character set utf8 collate utf8_unicode_ci;
Puede ser necesario cambiar la tabla SCHEMA no solo
ALTER SCHEMA <database name>
DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci (como Rich dijo - utf8mb4);
(mariaDB 10)