我正在使用带有utf8mb4的mariadb(“10.1.20-MariaDB-1~trusty”)。现在我正在将所有表转换为“row_format = dynamic”和表格排序“utf8mb4_unicode_ci”。我注意到我的数据库中有一些流氓表仍然有“utf8mb4_general_ci”作为整理,就像这样:
使用数据库;
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表CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
哪个会没有错误地完成。之后再次检查表状态,仍然显示
Collation = utf8mb4_general_ci
表。
将同一个数据库转储并导入我的本地5.6.32-78.0 Percona Server并执行相同的操作会导致表格排序根据需要转换为utf8mb4_unicode_ci。
有没有人知道可能是什么原因?
答案 0 :(得分:2)
表中很可能没有要转换的列,因此会跳过该操作。尝试运行
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;
基于此问题创建了错误报告: https://jira.mariadb.org/browse/MDEV-11637