問題:Mysql:Incorrect string value: '\xF0\x9F\x8D\x83\xF0\x9F...' for column
原因:通常情況,Mysql數(shù)據(jù)編碼格式為“utf-8”堕义,對于漢字來說足夠猜旬;Mysql中utf8占3個(gè)字節(jié)脆栋,但是倦卖,3個(gè)字節(jié)對于表情符號(hào)是不夠的,需4個(gè)字節(jié)椿争;此時(shí)使用utf8怕膛,會(huì)出現(xiàn)‘\xF0\x9F\x8D\x83\xF0\x9F’的問題。
解決方法
對應(yīng)字段修改為utf8mb4編碼褐捻,utf8mb4編碼是utf8編碼的超集景馁,兼容utf8绰精,并且能存儲(chǔ)4字節(jié)的表情字符卿樱。
image.png
修改yml配置(奇葩的是沒有見效)
druid:
connection-init-sql:
- set names utf8mb4
image.png
何大神跟蹤調(diào)試源碼后,發(fā)現(xiàn)yml配置中多數(shù)據(jù)源沒有起效。估計(jì)guns框架的多數(shù)據(jù)源是要收費(fèi)的帮坚。
何大神通過啟動(dòng)時(shí)添加系統(tǒng)變量來實(shí)現(xiàn)
public static void main(String[] args) {
//可以在navicat客戶端通過sql語句設(shè)置編碼格式
//set names utf8mb4;
System.getProperties().put("druid.initConnectionSqls","set names utf8mb4");
SpringApplication.run(GunsApplication.class, args);
logger.info(GunsApplication.class.getSimpleName() + " is success!");
}
image.png
其他知識(shí)點(diǎn)
[分布式事務(wù) ](http://www.cnblogs.com/zengkefu/p/5742617.html)
Atomikos:一個(gè)為Java平臺(tái)提供增值服務(wù)的并且開源類事務(wù)管理器
2019-06-03 springboot結(jié)合dbcp2配置多條init SQL(connection-init-sqls)