我正在尝试将我的RDS实例默认字符集更改为utf8mb4
,因此我可以支持表情符号。我有一个repo with all my recipes,我过去用它来自定义我的部署。我从AWS跟踪this guide,但在部署应用程序时,更改未反映在数据库中。我还确保在我的自定义cookbook仓库中的metadata.rb
目录的根目录中创建一个mysql
文件。
我还使用新的属性组设置了一个新的RDS实例,其中相应的字符集和排序规则设置为utf8mb4
。此DB也在我的OpsWorks应用程序中设置为我的数据源。
在Rails中,我还将编码和排序规则设置为utf8mb4
...
default: &default
adapter: mysql2
encoding: utf8mb4
collation: utf8mb4_general_ci
...
如果我ssh到我的应用程序服务器然后连接到MySql,这是我在查询全局变量时看到的......
mysql> SHOW GLOBAL VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
但是当我对非全局变量做同样的事情时,我看到了这一点:
mysql> show variables like 'char%';
+--------------------------+-------------------------------------------+
| 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 |
| character_sets_dir | /rdsdbbin/mysql-5.6.23.R1/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)
我还应该提一下,在我使用迁移将适当的表和列设置为utf8mb4
后,本地工作正常。
此时,我无法弄清楚为什么我无法正确应用字符集。希望比我聪明的人可以帮我解决这个问题!
由于
答案 0 :(得分:0)
在深入挖掘之后,我意识到在更新自定义烹饪书时我错过了一个关键步骤。我没有意识到简单地进行部署不会检索新的配方。在我将命令运行到“更新自定义菜谱”然后进行部署后,它运行了。
希望这有助于将来。