2016-12-22 2 views
2

J'utilise mariadb ("10.1.20-MariaDB-1 ~ fidèle") avec utf8mb4. Maintenant, je suis en train de convertir toutes les tables en "row_format = dynamic" et en table "utf8mb4_unicode_ci". J'ai remarqué qu'il y a quelques tables voyous dans ma base de données qui ont encore "utf8mb4_general_ci" comme collation, comme celui-ci:Mysql convertir table, classement ne change pas

utiliser la base de données;

AFFICHER TABLE STATUS OERE COLLATION! = "Utf8mb4_unicode_ci";

| Name      | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time   | Update_time | Check_time | Collation   | Checksum | Create_options  | Comment | 
+----------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+--------------------+---------+ 
| table     | InnoDB |  10 | Dynamic | 5 |   3276 |  16384 |    0 |  32768 |   0 |   NULL | 2016-12-21 21:12:18 | NULL  | NULL  | utf8mb4_general_ci |  NULL | row_format=DYNAMIC | 

Alors bien sûr, je courrais quelque chose comme ceci:

ALTER TABLE Table CONVERT À CARACTÈRE SET COLLATE utf8mb4 utf8mb4_unicode_ci;

Qui se terminerait sans erreur. Vérification tableau état nouveau par la suite, lit encore

Collation = utf8mb4_general_ci

pour cette table.

En vidant et en important cette même base de données dans mon serveur Percona local 5.6.32-78.0 et en faisant de même, le classement de la table sera converti en utf8mb4_unicode_ci comme souhaité.

Est-ce que quelqu'un a une idée de ce qui pourrait être la cause de cela?

Répondre

1

Il n'y a probablement pas de colonnes dans la table à convertir, donc l'opération est ignorée. Essayez d'exécuter

ALTER TABLE table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, FORCE; 

ou

ALTER TABLE table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, ALGORITHM=COPY; 

Un rapport de bogue a été créé à partir de cette question: https://jira.mariadb.org/browse/MDEV-11637

+0

/* Erreur SQL (1071): clé spécifiée était trop long; La longueur maximale de la clé est de 767 octets */ –

+0

@ user345426, veuillez coller la sortie de 'SHOW CREATE TABLE'. – elenst

+0

Merci, ça l'a corrigé! – Kotwarrior