成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring-Boot+Druid連接Mysql兼容utf8mb4

MarvinZhang / 1520人閱讀

問(wèn)題背景:非常見(jiàn)中文漢字存入mysql庫(kù)
報(bào)錯(cuò)信息:Cause: java.sql.SQLException: Incorrect string value: "xF0xA8xB3x92x0Ap..." for column "request" at row 1
pom信息如下:


        
            com.alibaba
            druid
            1.1.12
        
        
            mysql
            mysql-connector-java
            5.1.37
        

問(wèn)題很明顯,因?yàn)閙ysql庫(kù)一般都是utf-8的字符集,只支持3字節(jié)的中文漢字,而特殊的中文漢字是用四字節(jié)存儲(chǔ)的,所以首先要把你的數(shù)據(jù)庫(kù)表的格式設(shè)置正確,修改語(yǔ)句如下:

ALTER TABLE 你的表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE 你的表名 CHANGE 字段名 VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

修改完成后,我們就可以處理代碼層面的問(wèn)題了,

=============畫重點(diǎn),敲黑板!?。?=============

我們需要在初始化druid數(shù)據(jù)源時(shí),添加下面的配置,以保證連接mysql時(shí),客戶端的字符集被指定為utf8mb4

public DataSource getDataSource() throws Exception {
        Properties props = new Properties();
        props.put("driverClassName", "com.mysql.jdbc.Driver");
        props.put("url", "你的jdbc連接串");
        props.put("username", "你的用戶名");
        props.put("password", "你的密碼");
        props.put("initConnectionSqls", "set names utf8mb4;");
        return DruidDataSourceFactory.createDataSource(props);
}

initConnectionSqls這個(gè)配置項(xiàng)一定要寫對(duì),網(wǎng)上很多的教程寫的都是connectionInitSqls,在比較新的druid版本是不認(rèn)這個(gè)參數(shù)的,具體原因可以參加下方源碼的截圖。

參考文獻(xiàn):
他山之石1
他山之石2

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72035.html

相關(guān)文章

  • Application無(wú)法傳遞Emoji字符到MySQL的問(wèn)題

    摘要:中無(wú)法存儲(chǔ)字符,源自于之前編碼只支持最大個(gè)字節(jié),而需要個(gè)字節(jié)。事實(shí)上,如果只是某個(gè)列存在字符的存儲(chǔ)問(wèn)題,那就只需要修改這個(gè)列的編碼類型即可。這涉及到應(yīng)用與建立連接的問(wèn)題。有一條命令是,會(huì)將的編碼統(tǒng)一設(shè)置。使用這條命令便可以達(dá)到我們的目的。 MySQL中無(wú)法存儲(chǔ)Emoji字符,源自于MySQL 5.5之前utf8編碼只支持最大3個(gè)字節(jié),而Emoji需要4個(gè)字節(jié)。從MySQL 5.5開(kāi)始,...

    dmlllll 評(píng)論0 收藏0
  • spring-boot-plus 常見(jiàn)問(wèn)題解決 FAQ(十二)

    摘要:常見(jiàn)問(wèn)題解決編譯錯(cuò)誤問(wèn)題日志編譯錯(cuò)誤編譯提示等日志錯(cuò)誤解決檢查是否安裝插件安裝安裝運(yùn)行錯(cuò)誤問(wèn)題錯(cuò)誤不能連接解決檢查服務(wù)是否啟動(dòng)檢查地址和端口號(hào)未知數(shù)據(jù)庫(kù)解決檢查是否新建數(shù)據(jù)庫(kù)默認(rèn)的數(shù)據(jù)庫(kù)為,可在不同環(huán)境的配置文件中更改例如中 spring-boot-plus 常見(jiàn)問(wèn)題解決 FAQ 編譯錯(cuò)誤問(wèn)題 log日志編譯錯(cuò)誤 編譯提示log.info等日志錯(cuò)誤 解決 檢查是否安裝lombok插件...

    RayKr 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<