create table check2(f1 varchar(20),f2 varchar(20));
crée une table avec le classement par défaut latin1_general_ci
;
alter table check2 collate latin1_general_cs;
show full columns from check2;
affiche le classement individuel des colonnes sous la forme «latin1_general_ci».
Alors quel est l'effet de la commande alter table?
Réponses:
Pour modifier le jeu de caractères par défaut et le classement d'un tableau, y compris ceux des colonnes existantes (notez la clause convert to ):
Modification de la réponse, grâce à l'invitation de quelques commentaires:
et
la source
utf8_bin
c'est mieux, n'est-ce pas? Quelle est la différence entreutf8_bin
etutf8_unicode_ci
?utf8_bin
est sensible à la casse etutf8_unicode_ci
n'est pas sensible à la casse. L'un n'est pas nécessairement meilleur que l'autre - utilisez ce qui répond à vos besoins.utf8
. Ce n'est presque jamais ce que vous voulez et conduit souvent à des dégâts inattendus. Leutf8
jeu de caractères n'est pas entièrement compatible avec UTF-8. Leutf8mb4
jeu de caractères est ce que vous voulez si vous voulez UTF-8.MySQL a 4 niveaux de classement: serveur, base de données, table, colonne. Si vous modifiez le classement du serveur, de la base de données ou de la table, vous ne modifiez pas le paramètre de chaque colonne, mais vous modifiez les classements par défaut.
Par exemple, si vous modifiez le classement par défaut d'une base de données, chaque nouvelle table que vous créez dans cette base de données utilisera ce classement, et si vous modifiez le classement par défaut d'une table, chaque colonne que vous créez dans cette table obtiendra ce classement.
la source
show variables like "collation%";
, donc le total est SIX .Il définit le classement par défaut de la table; si vous créez une nouvelle colonne, qui devrait être collée avec latin_general_ci - je pense. Essayez de spécifier le classement pour la colonne individuelle et voyez si cela fonctionne. MySQL a un comportement vraiment bizarre en ce qui concerne la façon dont il gère cela.
la source
peut avoir besoin de changer le SCHEMA non seulement la table
(mariaDB 10)
la source
<database name>
au lieu de<table name>
utf8
, maisutf8mb4
.