MySQL数据库 - 将characterset和collat​​ion转换为utf8mb4和utf8mb4_unicode_ci?

时间:2017-12-27 18:48:59

标签: mysql character-encoding

我已根据建议使用collowing命令将我的mysql数据库的charset和collat​​ion从latin1转换为utf8mb4 {/ 3}}

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

要检查转换是否正确完成,我已运行以下命令。

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

输出

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

1 个答案:

答案 0 :(得分: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。默认值为binary,表示不进行转换。

您可能不需要更改此值。

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

  

如果未在CREATE DATABASE语句中指定数据库字符集和排序规则,则将服务器字符集和排序规则用作默认值。他们没有其他目的。

您可以在/etc/my.cnf中更改此值,但这是多余的,因为您已经为每个数据库指定了字符集。