MySQL skip-character-set-client-handshake導致的一個字符集問題


http://www.quweiji.com/mysql-skip-character-set-client-handshake%E5%AF%BC%E8%87%B4%E7%9A%84%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E9%9B%86%E9%97%AE%E9%A2%98/

這篇文章主要介紹了MySQL skip-character-set-client-handshake導致的一個字符集問題,需要的朋友可以參考下

今天幫同事處理一個棘手的事情,問題是這樣的:

無論在客戶機用哪個版本的mysql客戶端連接服務器,發現只要服務器端設置了

character-set-server = utf8

之后,

復制代碼 代碼如下:

character_set_client、 character_set_connection、character_set_results

就始終都是和服務器端保持一致了,即便在mysql客戶端加上選項

復制代碼 代碼如下:

--default-character-set=utf8

也不行,除非連接進去后,再手工執行命令

復制代碼 代碼如下:

set names latin1

,才會將client、connection、results的字符集改過來。

經過仔細對比,最終發現讓我踩坑的地方是,服務器端設置了另一個選項:

復制代碼 代碼如下:

skip-character-set-client-handshake

文檔上關於這個選項的解釋是這樣的:

復制代碼 代碼如下:

--character-set-client-handshake
Don't ignore character set information sent by the client. To ignore client information and use the default server character set, use --skip-character-set-client-handshake; this makes MySQL behave like MySQL 4.0

這么看來,其實也是有好處的。比如啟用 skip-character-set-client-handshake 選項后,就可以避免客戶端程序誤操作,使用其他字符集連接進來並寫入數據,從而引發亂碼問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM