這個報錯的原因是因為emoji或者可能的特殊字符插入數據庫導致的字節數不一致問題,參考下面那篇文章.
做微信綁定的時候,一直綁定失敗,一開始解決問題的思路錯誤了.
對於不方便抓包的手機web,遇到問題首先應該在服務器端看是否收到請求,如果收不到再抓包查看請求是否發送.
這樣就能確認問題出在了哪里,客戶端/應用服務器/db,可以用sout輸出信息來進行測試.
這次的問題是因為nickname里面不知道為什么有特殊字符(我昵稱明明是中文),然后服務器端發現拋出了這個異常.
百度后發現這個是因為數據庫字符集不支持emoji,我這下知道為什么我本機一直可以插入了,因為我本機是utf8(默認創建就是),所以不會有這個問題,但是服務器端默認創建的數據庫是latin,這下原因知道了,所以我把本機和服務器的數據庫都換成了utf8mb4,utf8mb4_unicode_ci,並且根據 https://blog.csdn.net/qq_31122833/article/details/83992085 設置了服務器上的mysql默認字符集/去除了java連接中的編碼.
所以以后數據庫創建不能再不選字符集了,linux下的mysql創建數據庫有可能不是默認的utf8,所以要指定為 utf8mb4,utf8mb4_unicode_ci ,這樣以后就不會出現這種問題了.