我用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。
有沒有人有一個想法可能是什麼原因呢?
/* SQL錯誤(1071):指定的關鍵是太長;最大密鑰長度爲767字節*/ –
@ user345426,請粘貼'SHOW CREATE TABLE'的輸出。 – elenst
謝謝,修好了! – Kotwarrior