最近在項(xiàng)目中遇到一個問題,就是在mysql中修改字符集保存不了。當(dāng)我使用ALTER TABLE修改字符集時(shí),執(zhí)行命令后并沒有發(fā)生變化。
我嘗試了以下幾種方法:
- 使用SET NAMES utf8mb4;修改字符集
- 使用ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 修改數(shù)據(jù)庫字符集
- 使用ALTER TABLE table_name DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; 修改表的字符集
但是執(zhí)行這些命令后,字符集并沒有被修改成功。
經(jīng)過多方查詢和研究,我發(fā)現(xiàn)造成這個問題的原因是因?yàn)槲业膍ysql服務(wù)器版本為5.5.x,而utf8mb4字符集是在mysql版本5.5.3及以上版本才支持的。
所以,解決這個問題有兩種方法:
- 升級mysql版本到5.5.3及以上版本
- 改用utf8字符集
由于項(xiàng)目的局限性和維護(hù)成本,我們最終選擇了第二種方法來解決這個問題。
ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
在執(zhí)行以上命令后,我成功把字符集改成了utf8。
總結(jié):在修改mysql字符集時(shí),需要注意mysql服務(wù)器版本的限制。如果遇到無法保存修改字符集的問題可以考慮升級mysql版本或者選擇其他支持的字符集。
上一篇boost解析json