今天開發(fā)反應(yīng)兩樣的程序往一個庫里面插入數(shù)據(jù)正常,往另外一個庫里面插入數(shù)據(jù)有亂碼。第一反應(yīng)就是兩個數(shù)據(jù)庫關(guān)于字符集的配置不一樣。
在兩個庫分別查看參數(shù):
show variables like "%char%";
+--------------------------+------------------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
+--------------------------+------------------------------------------+
>show variables like "%char%";
+--------------------------+------------------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
+--------------------------+------------------------------------------+
可以看到character_set_server的參數(shù)配置不一樣,于是將有問題的那個庫配置成utf8,開發(fā)再次測試的時候表示還有亂碼問題,這時想起來校驗字符集沒有改,于是分別查看兩邊校驗字符集的差異:
>show variables like "%coll%";
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
>show variables like "%coll%";
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
可以看到collation_server 參數(shù)設(shè)置不一致,于是把這個參數(shù)也改成了utf8,再次測試的時候數(shù)據(jù)顯示正常。
mysql支持多個層次的字符集設(shè)置:
服務(wù)層(server)、數(shù)據(jù)庫層(database)、數(shù)據(jù)表(table)、字段(column)、連接(connection)、結(jié)果集(result)
優(yōu)先級:server > database > table > column
為了避免出現(xiàn)因字符不一致導(dǎo)致的中文亂碼的問題,最好就是將字符集全部設(shè)置成一樣的。
另外提一下skip-character-set-client-handshake這個參數(shù),可以通過開啟這個參數(shù)來過濾客戶端設(shè)置的字符集
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當前題目:記一次mysql中文字符亂碼的問題排查-創(chuàng)新互聯(lián)
鏈接分享:http://vcdvsql.cn/article12/ichdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、建站公司、網(wǎng)站導(dǎo)航、商城網(wǎng)站、做網(wǎng)站、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)