MySQL的几个character_set变量的说明
參考: http://www.th7.cn/db/mysql/201412/84636.shtml
?
MySQL關于character有如下8個變量:
character_set_client
character_set_connection
character_set_database
character_set_filesystem
character_set_results
character_set_server
character_set_system
character_sets_dir
?
結論:
??? character_set_client、character_set_connection、character_set_results這3個參數值是由客戶端每次連接進來設置的,和服務器端沒關系。
??? 我們登陸進mysql后,執行 set names utf8; 實際就是同時修改上面的這3個參數值的。
?
環境:
??? CentOS6.7x86_64
? ? Percona Server 5.7 (server段設置的是character-set-server= utf8)
?
在Windows上使用CMD命令行去連接node1,如下圖:
在Windows上使用SQLyog命令行去連接node1,如下圖:
可以看到2個工具連接到同一個服務器上,顯示出的參數卻不一樣的。
從官方文檔中可以看出character_set_connection、character_set_client、character_set_results三個字符集什么時候用到。
從實際上可以看到,當客戶端連接服務器的時候,它會將自己想要的字符集名稱發給mysql服務器,然后服務器就會使用這個字符集去設置character_set_client、character_set_connection、character_set_results這三個值。如cmd是用gbk,而SQLyog是用utf8.
?
?
如果我們想告訴mysql server自己本次連接想使用latin1,則命令行下可以如下寫法:
mysql -uroot -h 192.168.2.11 -pAbcd@1234 --default-character-set=latin1
此外,要修改上面的3個字符集的話,
還可以在my.cnf的[mysql]段里面增加:
default-character-set=latin1
也可以登錄進去后,執行set names latin1的效果相同。
其他幾個參數:
character_set_database
這個是當前所在的數據庫字符集。如果沒有切換到其他數據庫,則character_set_database顯示的和character_set_server一致。
例:切換到一個默認是gbk的數據庫里,執行showvariables like 'character_set_database';看到的就是gbk
?
character_set_filesystem
把os上文件名轉化成此字符集,即把 character_set_client轉換character_set_filesystem,默認binary是不做任何轉換的
?
character_set_system
character_set_system是個只讀數據不能更改。也沒多少改的意義,他是元數據的編碼,相信不會有人用中文做數據庫名和字段名之類的吧,這個字段和具體存儲的數據無關。
?
character_sets_dir
不清楚、。。。
轉載于:https://blog.51cto.com/lee90/1916511
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的MySQL的几个character_set变量的说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity3d之控制人物转向移动并播放动
- 下一篇: linux cmake编译源码,linu