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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据库 - 将characterset和collat ion转换为utf8mb4和utf8mb4_unicode_ci?相关的知识,希望对你有一定的参考价值。

我已经使用collowing命令将我的mysql数据库的charset和collat​​ion从latin1转换为utf8mb4 here

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%' 

输出是

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中

答案

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中更改此值,但这是多余的,因为您已经为每个数据库指定了字符集。

以上是关于MySQL数据库 - 将characterset和collat ion转换为utf8mb4和utf8mb4_unicode_ci?的主要内容,如果未能解决你的问题,请参考以下文章

mysql server characterset 显示为latin1怎么改成utf8?

mysql 中 character set 与 collation 的理解

MySQL基础

02-mysql多表查询

MySQL基础整理

MySQL中character set与collation的理解(转)