J'utilise 5.6.28 MySQL Community Server à Host WordPress + Blog de prophoto en allemand à Centos 6.7 Linux Server:
mysql> show tables;
+-----------------------+
| Tables_in_blog |
+-----------------------+
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_terms |
| wp_usermeta |
| wp_users |
+-----------------------+
11 rows in set (0.00 sec)
Ensuite, j'ai récemment commencé à développer une application de langue russe et j'ai dû modifier les paramètres MySQL sur TF8MB4 Codage de /etc/my.cnf :=:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
Maintenant, j'ai un problème mineur avec la première base de données qu'il est toujours affichée comme Latin1 :=:
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | latin1 | HOW TO CONVERT?
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
Quelle est la meilleure façon de convertir A Latin1 Base de données à UTF8MB4 S'il vous plaît?
Et comment s'assurer que les caractères allemands Umlaut (ä ö ü
) sont convertis correctement dans le processus?
Il y a deux questions possibles ici et ils ont deux réponses différentes -
Comment faire toutes les nouvelles tables UTF8MB4
Cela peut être fait (pour une base de données) tout en créant une base de données:
CREATE DATABASE dbname
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
Vous pouvez ALTER
une base de données (syntaxe similaire), mais qui fournit uniquement A défaut Pour avenir Tables.
Il y a des bugs relatifs à héritage des variables "serveur": http://dev.mysql.com/worklog/task/?id=3811 , alors je suggère que vous soyez simplement explicite sur chaque base de données .
Comment convertir les tables latin1 existantes
Si vous avez une table déclarée être latin1
et contient correctement des octets latin1, et vous souhaitez modifier toutes les colonnes Char/Text sur UTF8 ...
ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4;
Cela modifie la définition et modifie activement les octets nécessaires dans les colonnes.
ALTER TABLE tbl MODIFY col1 ... CHARACTER SET utf8mb4;
est semblable à ce qui précède, mais ne fonctionne qu'une seule colonne à la fois et nécessite exactement les bonnes choses de la clause de modification. Par conséquent, ce serait assez fastidieux. Cependant, il est utile que vous ne voulez modifier que certaines des colonnes.