前言
?這次對接的美團外賣 發(fā)現(xiàn)美團推送過來的訂單中有表情符號。這些表情符號的存儲問題,再上一個版本中就發(fā)現(xiàn)過。為了最小程度的影響程序,是直接在程序在做了表情過濾的。但是發(fā)現(xiàn)新增的表情太多了,而且編碼也有千奇百怪的,所以這次索性考慮數(shù)據(jù)庫兼容,在開發(fā)環(huán)境數(shù)據(jù)庫測試完成后,發(fā)現(xiàn)utf8編碼轉(zhuǎn)換成utf8mb4沒有出現(xiàn)擔(dān)心的亂碼問題,以前mysql低版本出現(xiàn)過,所以轉(zhuǎn)換前還是最后能備份數(shù)據(jù)。
更改過程
1.數(shù)據(jù)庫更改
?對數(shù)據(jù)庫的編碼更改我沒有使用sql,因為我數(shù)據(jù)庫管理軟件使用了navicat。navicat自帶了編碼修改工具,還是很方便的。
?首先更改數(shù)據(jù)庫編碼

image.png
?然后修改對應(yīng)的列編碼 我這里是沒有更改表編碼的 如果想整體的修改表編碼
再多一步表編碼修改即可

image.png
這里排序規(guī)則選擇了utf8mb4_general_ci 一般會從 utf8mb4_general_ci 和 utf8mb4_unicode_ci里選 我的排序要求沒有那么高 一般選utf8mb4_general_ci也就可以了
2.數(shù)據(jù)庫連接池配置更改
?數(shù)據(jù)連接池使用的是druid。要使用utf8mb4要指定編碼。這個編碼指定比較特殊
String connectionInitSqls = "SET NAMES utf8mb4";
StringTokenizer tokenizer = new StringTokenizer(connectionInitSqls, ";");
druidDataSource.setConnectionInitSqls(Collections.list(tokenizer));//重點設(shè)置該參數(shù)
配置好數(shù)據(jù)庫和連接池后即可。