create table check2(f1 varchar(20),f2 varchar(20));
cria uma tabela com o agrupamento padrão latin1_general_ci
;
alter table check2 collate latin1_general_cs;
show full columns from check2;
mostra o agrupamento individual das colunas como 'latin1_general_ci'.
Então, qual é o efeito do comando alter table?
Respostas:
Para alterar o conjunto de caracteres padrão e agrupamento de uma tabela incluindo os das colunas existentes (observe a cláusula converter em ):
A resposta foi editada, graças à solicitação de alguns comentários:
e
fonte
utf8_bin
é melhor, não é? Qual é a diferença entreutf8_bin
eutf8_unicode_ci
?utf8_bin
maiúsculas de minúsculas e não diferenciautf8_unicode_ci
maiúsculas de minúsculas. Um não é necessariamente melhor que o outro - use o que for mais adequado às suas necessidades.utf8
. Quase nunca é o que você deseja e muitas vezes leva a bagunças inesperadas. Outf8
conjunto de caracteres não é totalmente compatível com UTF-8. Outf8mb4
conjunto de caracteres é o que você deseja se deseja UTF-8.O MySQL possui 4 níveis de agrupamento: servidor, banco de dados, tabela, coluna. Se você alterar o agrupamento do servidor, banco de dados ou tabela, não altera a configuração de cada coluna, mas altera os agrupamentos padrão.
Por exemplo, se você alterar o agrupamento padrão de um banco de dados, cada nova tabela que você criar nesse banco de dados usará esse agrupamento, e se você alterar o agrupamento padrão de uma tabela, cada coluna criada nessa tabela receberá esse agrupamento.
fonte
show variables like "collation%";
, portanto total é SEIS .Ele define o agrupamento padrão para a tabela; se você criar uma nova coluna, ela deverá ser intercalada com latin_general_ci - eu acho. Tente especificar o agrupamento para a coluna individual e veja se isso funciona. O MySQL tem um comportamento realmente bizarro em relação à maneira como lida com isso.
fonte
pode ser necessário alterar a tabela SCHEMA, não apenas
(mariaDB 10)
fonte
<database name>
em vez de<table name>
utf8
, masutf8mb4
.