More  

小編的世界 優質文選 資料

mysql數據庫保存異常:state「HY000」;error code「1366」


2020年11月16日 - 資料小編  
   

樾棠琤琤

錯誤日志

一、原因分析

1、查看服務接口api編碼

通過UrlDecode對接口api解碼發現,接口使用方對接口api進行了GBK編碼。

2、查看mysql數據表中對應字段

發現數據表中的編碼格式是utf8的。

通過這個就可以很明顯的看出來,是因為存儲的數據是十六進制的字符

3、查看mysql字符集所支持的字節範圍

我們可以知道utf8最大支持3個字節的字符,查看mysql官網發現,mysql5.5.3之後,新增了一個與utf-8類似的字符集,utf8mb4,並且它的編碼支持4個字節每字符

二、解決方法

1、我們可以修改該字段的字符集格式為utf8mb4

2、我們可以通過修改mysql的my.cnf文件中的字符集鍵值,

2.1、在字段裏加入default-character-set=utf8,如下:

port = 3306

socket = /var/lib/mysql/mysql.sock

default-character-set=utf8

2.2、在字段裏加入character-set-server=utf8,如下:

port = 3306

socket = /var/lib/mysql/mysql.sock

character-set-server=utf8

2.3、在字段裏加入default-character-set=utf8,如下:

no-auto-rehash

default-character-set=utf8

修改完成後,service mysql restart重啟mysql服務就生效。注意:字段與字段是有區別的。

2.4、如果上面的都修改了還有亂碼,在connection連接上進行編碼修改

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

三、總結

1、對接口api制定詳細使用說明 aName進行UTF-8編碼,避免剛接觸的使用者調到坑中。

2、系統中涉及編碼 統一使用UTF-8。

  大家在看