方法很暴力

首先确定是lantin1编码

show create database test_db;

+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| test_db      | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+----------------------------------------------------------------+

然后,查看表内字符集

use test_db;
show create table test_table;

...
`user_name` varchar(64) DEFAULT NULL,
...
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

好了,确定是这样,解决起来就简单了

ALTER DATABASE `test_db` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';

use test_db;

ALTER TABLE `test_table` CONVERT TO CHARACTER SET `utf8mb4` COLLATE `utf8mb4_general_ci`; 

执行之后,数据库和表,就变成了 utf8mb4

此方法只适用于默认编码,表中的字段没有设置字符集的状态。

如果字段已经设置字符集,修改每个字段的字符集,就比较麻烦了