show variables where variable_name like 'character_set_%' or variable_name like 'collation%';
必须保证
系统变量描述character_set_client(客户端来源数据使用的字符集)character_set_connection(连接层字符集)character_set_database(当前选中数据库的默认字符集)character_set_results(查询结果字符集)character_set_server(默认的内部操作字符集)这几个变量必须是utf8mb4。
2.1.3 将已经建好的数据库、表和列转换成utf8mb4,utf8mb4_unicode_ci
更改数据库编码:alter database database_name character set utf8mb4 collate utf8mb4_unicode_ci;
更改表编码:alter table table_name convert to character set utf8mb4 collate utf8mb4_unicode_ci;
更改列编码:alter table table_name change column_name column_name varchar( 36 ) character set utf8mb4 collate utf8mb4_unicode_ci not null
mysql官方文档
database character set and collation
table character set and collation
column character set and collation
如果我不想修改本地数据库呢?那就用下面这种方法。(我用的是第二种) 2.2 在spring boot中配置,不修改本地数据库
2.2.1 在jpa建表时设置表的编码和排序规则
重写mysql5innodbdialect#gettabletypestring()
public class mysql5innodbdialectutf8mb4 extends mysql5innodbdialect {
@override
public string gettabletypestring() {
return "engine=innodb default charset=utf8mb4 collate utf8mb4_unicode_ci";
}
}