我正在更改 Windows 上的 my.ini 文件,该文件位于 C:/ProgramData/MySQL/MySQL Server 5.6 中,但它只会更改某些字符集的值,如果您在我运行 SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
在 phpmyadmin 中它显示了一些选项的 utf8。
**Variable_name** **Value**
character_set_client utf8
character_set_connection utf8
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8
character_set_server utf8mb4
character_set_system utf8
collation_connection utf8_general_ci
collation_database utf8mb4_unicode_ci
collation_server utf8mb4_unicode_ci
我已经尝试过几种配置,例如:
[client]
default-character-set = utf8mb4
no-beep
[mysql]
default-character-set = utf8mb4
[mysqld]
#init_connect='SET collation_connection = utf8mb4_unicode_ci'
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
#init-connect='SET NAMES utf8mb4'
skip-character-set-client-handshake
以及上述选项的不同组合,但没有。 在 mysql 上查看时始终显示相同的值。 有什么建议吗?
最佳答案
从 MySQL 的 utf8 切换到 utf8mb4
第 1 步:创建备份
在要升级的服务器上创建所有数据库的备份。安全第一!
第 2 步:升级 MySQL 服务器
将MySQL服务器升级到v5.5.3+,或请您的服务器管理员为您完成。
第 3 步:修改数据库、表和列
更改数据库、表和列的字符集和排序属性以使用 utf8mb4 而不是 utf8。
# For each database:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# For each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# For each column:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# (Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is just an example for a `VARCHAR` column.)
由于 utf8mb4 与 utf8 完全向后兼容,因此不应发生拼写或其他形式的数据丢失。 (但是你有备份,对吧?)
关于php - mysql5.6 不会将 character_set 值更改为 utf8mb4,my.ini 配置在 windows 和 iis 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27154664/