程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL skip-character-set-client-handshake導致的一個字符集問題

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

編輯:關於MYSQL數據庫

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

無論在客戶機用哪個版本的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 選項後,就可以避免客戶端程序誤操作,使用其他字符集連接進來並寫入數據,從而引發亂碼問題。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved