我正在使用utf8mb4的mariadb (" 10.1.20-MariaDB-1~trusty")。现在,我正在将所有表转换为"row_format = dynamic"和表排序规则"utf8mb4_unicode_ci"。我注意到我的数据库中有一些顽固的表仍然具有"utf8mb4_general_ci"作为排序规则,例如下面这个:
use database;
SHOW TABLE STATUS 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 table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
这个命令将不会出现错误。再次检查表格状态,它仍然显示为:
Collation = utf8mb4_general_ci
对于那个表格。
将相同的数据库转储并导入到我的本地5.6.32-78.0 Percona服务器中,并在那里执行相同的操作,结果表格排序规则将被转换为所需的utf8mb4_unicode_ci。
有人有想法可能是什么原因吗?
SHOW CREATE TABLE
的输出结果。 - elenst