我在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
。
答案 0 :(得分:5)
我认为问题在于 VARIABLES 和 GLOBAL VARIABLES 之间的区别。
如果列出 GLOBAL VARIABLES ,这应该反映您在参数组中看到的内容:(假设您已按照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
答案 1 :(得分:1)
更改参数组后 - 在控制台中是否显示“Pending Reboot”警告。如果是,请尝试重新启动数据库实例,并开始应用新的字符集。
更多信息 - http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html