我在 RDS 上运行 MySQL 数据库。我想将所有编码更改为 utf8mb4
。我在 RDS 上创建了一个参数组,所有 character_set_*
参数都为 utf8mb4
,将其分配给我的 RDS 实例,然后重启实例。但是,当我在我的数据库上运行 SHOW VARIABLES LIKE '%char%'
时,仍然有 latin1
的值,这是我不想要的:
character_set_client latin1
character_set_connection latin1
character_set_database utf8mb4
character_set_filesystem binary
character_set_results latin1
character_set_server utf8mb4
character_set_system utf8
character_sets_dir /rdsdbbin/mysql-5.6.22.R1/share/charsets/
同样,我在数据库上创建的新列是 latin1
编码的,而不是 utf8mb4
编码的。我可以通过 mysql
命令行手动更改编码值,但这没有帮助,因为当我推送到生产环境时,这些值也被重置为 latin1
。
最佳答案
我认为这个问题是 VARIABLES 和 GLOBAL VARIABLES 之间的区别。
如果您列出GLOBAL VARIABLES,这应该反射(reflect)您在参数组中看到的内容:(假设您已经按照 Naveen 在其他答案中建议的那样重新启动)
SHOW GLOBAL VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
这与您在常规 VARIABLES 中看到的相反:
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
这些有时会被连接中提供的选项覆盖。例如,使用选项连接 --default-character-set:
mysql -h YOUR_RDS.us-east-1.rds.amazonaws.com -P 3306 --default-character-set=utf8 -u YOUR_USERNAME -p
关于mysql - AWS RDS 参数组不改变 MySQL 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30522939/