MySQL字元集編碼相關

來源:互聯網
上載者:User

標籤:檢查   串連   建立資料庫   variable   lan   ima   status   密碼   under   

Windows 10家庭中文版,MySQL  5.7.20,2018-05-07

 

Part.1 尋找資料庫的字元集編碼

查看MySQL字元集編碼:status命令

使用命令列登入MySQL伺服器,然後輸入status命令,可以查看到伺服器的字元集編碼及其它資訊。

從可以看到,我的伺服器(Server characterset)、資料庫(Db characterset)的字元集編碼是latin1。

 

找到了四個字元集編碼,它們各自代表什麼意思呢?

-Server characterset

資料庫伺服器的預設字元集編碼,在後續建立資料庫時,若無指定字元集編碼,則建立的資料庫預設使用此字元集編碼。

-Db characterset

當前沒有選擇資料庫(use database_name)時,顯示建立資料庫的預設字元集編碼,同Server character;若已選擇數

據庫,則顯示資料庫的真實字元集編碼。顯示了一個字元集編碼為utf8的資料庫的status資訊。

-Client characterset、Conn. characterset

用戶端本身的字元集編碼 和 用戶端和伺服器此時建立串連所使用的字元集編碼。

 

還可以使用show variables命令查看更多字元集編碼資訊:show variables like ‘char%‘

 

show variables還可以查看更多的資料庫的資訊,可以使用help show variables命令查看它的具體用法

 

說明,show variables命令可以顯示資料庫的所有系統變數——全部 或者 根據需要尋找,裡面的有些變數可以放到資料庫的啟動

設定檔my.ini中,從而修改資料庫的配置資訊。更多資料和權威資訊,請參考官網連結Server System Variables。

 

Part.2 修改資料庫預設字元集編碼

兩個問題:

為什麼要修改預設字元集編碼?

預設的是latin1,不支援中文,而我要儲存的資料包括中文,因此,要更改。

當然,不更改也可以,這樣的話,每次建立新的資料庫時就需要指定字元集編碼,如下:

create database if not exists test2 default charset utf8 collate utf8_general_ci;

 

將預設字元集編碼修改為什嗎?

utf8(是utf8,不是utf-8,沒有虛線)!

 

兩種方式:

1.在命令列用戶端修改

set character_set_server=utf8;

警告,這種方式在命令列用戶端重啟後無效。

實驗:修改後建立資料庫,檢查建立資料庫的字元集編碼,預期是utf8。

 

2.在資料庫伺服器設定檔my.ini中修改

在my.ini檔案中添加下面兩行中任意一行即可預設字元集編碼設定為utf8(存在於[mysqld]下面):

character_set_server = utf8
character-set-server = utf8

兩行有什麼區別嗎?第一行用底線串連,第二行用虛線串連,但是,都有效。

再次強調,是utf8,不是utf-8(虛線)。

這種方式就沒有第一種的問題了,但是呢,配置後需要重啟資料庫伺服器才會生效。

 

Part.3 附錄

1.show variables、show status(顯示資料庫伺服器狀態)顯示的內容太多——一屏顯示不完,怎麼辦呢?

輸出到檔案中!

方法如下:

mysql -uroot -p -e "show variables" > d:\mysql.txt

斷行符號,輸入root帳號密碼,再斷行符號即可將結果儲存到d盤的mysql.txt檔案中(儲存到csv檔案中或許更好?)。

注意,show variables命令用雙引號括起來,單引號不行。

2.可以使用show character set;查看MySQL資料庫伺服器支援的字元集

3.伺服器、資料庫、表的字元集編碼關係

若在建立資料庫時沒有指定,則其字元集編碼 同 伺服器;

若在資料庫中建立表時沒有指定,則其字元集編碼 同 所在資料庫。

不過,伺服器、資料庫、表的編碼都可以通過命令列進行修改(各個欄位的字元集編碼也可以單獨指定)。

4.查看錶Table的編碼

使用show create table...命令,如所示。

5.遺留問題

my.ini設定檔中的[mysqld]、[client]、[mysql]分別意味著什嗎?

 

參考連結:

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html

https://dev.mysql.com/doc/refman/8.0/en/charset-configuration.html

53431852

79638776

https://www.cnblogs.com/jiangxiaobo/p/6110647.html

https://zhidao.baidu.com/question/539586616.html

https://www.2cto.com/database/201112/114418.html

https://www.cnblogs.com/candle806/archive/2013/01/14/2859721.html

 

MySQL字元集編碼相關

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.