2016-12-22 42 views
2

我用utf8mb4使用mariadb(「10.1.20-MariaDB-1〜trusty」)。現在我正在將所有錶轉換爲「row_format = dynamic」和表格整理「utf8mb4_unicode_ci」。我注意到在我的數據庫中有一些流氓表仍然具有「utf8mb4_general_ci」作爲整理,如下所示:Mysql轉換表,整理不變

use database;顯示錶狀態WHERE 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 | 

那麼當然我會跑是這樣的:

ALTER TABLE錶轉換爲字符集utf8mb4 COLLATE utf8mb4_unicode_ci;

這將完成沒有錯誤。查表狀態再次算賬,還是讀

整理=那個表utf8mb4_general_ci

轉儲並導入同一個數據庫到我的本地5.6.32-78.0 Percona服務器,並做相同的操作會導致表格整理按照需要轉換爲utf8mb4_unicode_ci。

有沒有人有一個想法可能是什麼原因呢?

回答

1

很可能表中沒有要轉換的列,因此操作將被跳過。嘗試運行

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

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

bug報告是基於對這個問題產生: https://jira.mariadb.org/browse/MDEV-11637

+0

/* SQL錯誤(1071):指定的關鍵是太長;最大密鑰長度爲767字節*/ –

+0

@ user345426,請粘貼'SHOW CREATE TABLE'的輸出。 – elenst

+0

謝謝,修好了! – Kotwarrior