我已根据建议使用collowing命令将我的mysql数据库的charset和collation从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%'
输出
当character_set_client,character_set_connection,character_set_database,character_set_results现在在utf8mb4中时,character_set_filesystem是二进制的,而character_set_server仍然是拉丁语。究竟是什么以及它为什么还没有在utf8mb4中?
同样,collation_connection和collation_database在utf8mb4_unicode_ci中,但collation_server仍然在latin1_swedish_ci
答案 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
中更改此值,但这是多余的,因为您已经为每个数据库指定了字符集。