2017-12-27 171 views
1

我已經處理latin1使用collowing命令utf8mb4作爲建議hereMySQL數據庫 - 字符集和歸類轉換爲utf8mb4和utf8mb4_unicode_ci?

ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 

要檢查的轉換進行了適當轉換我的MySQL數據庫的字符集和校對,我已經運行下面的命令。

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' 
    OR Variable_name LIKE 'collation%' 

輸出是

enter image description here

雖然character_set_client字符,是character_set_connection,character_set_database,character_set_results現在在utf8mb4,character_set_filesystem是二進制和被character_set_server仍然是在拉丁美洲。究竟是什麼以及爲什麼它仍然不在utf8mb4中?

同樣,collat​​ion_connection是和collat​​ion_database查看在utf8mb4_unicode_ci,但collat​​ion_server的仍是latin1_swedish_ci

+0

做'SELECT HEX(col)...'來看看一些非英文字符的外觀。這將有助於驗證轉換是否正常工作。 –

回答

1

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_character_set_filesystem

這個變量被用來解釋引用的文件名,如在LOAD DATA字符串文字INFILE和SELECT ... INTO OUTFILE語句和LOAD_FILE()函數。在文件打開嘗試發生之前,這些文件名將從character_set_client轉換爲character_set_filesystem。默認值是二進制,這意味着不發生轉換。

您可能不需要更改此值。

https://dev.mysql.com/doc/refman/5.7/en/charset-server.html

字符集和歸類被用作默認值如果數據庫字符集和核對未指定在CREATE DATABASE語句的服務器。他們沒有其他目的。

您可以在您的/etc/my.cnf中更改此值,但它是多餘的,因爲如果您已經爲每個數據庫指定了字符集。