配置Amazon RDS mysql来存储中文字符

时间:2013-06-06 03:24:12

标签: mysql amazon-rds

如何配置Amazon RDS以正确的方式存储中文字符?目前文字全部变为'????'。

我已创建新参数组并将字符集设置为utf8并修改实例。以下是详细信息:

mysql> show variables like '%char%';
+--------------------------+-------------------------------------------+
| Variable_name            | Value                                     |
+--------------------------+-------------------------------------------+
| character_set_client     | utf8                                      |
| character_set_connection | utf8                                      |
| character_set_database   | utf8                                      |
| character_set_filesystem | binary                                    |
| character_set_results    | utf8                                      |
| character_set_server     | utf8                                      |
| character_set_system     | utf8                                      |
| character_sets_dir       | /rdsdbbin/mysql-5.5.27.R1/share/charsets/ |
+--------------------------+-------------------------------------------+


+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+

3 个答案:

答案 0 :(得分:13)

按照@Peter Venderberghe的配置RDS的答案后,我仍然不能让它正确存储中文字符。

最后,我使用mysql命令行连接到RDS(你可以使用mysql workbench或其他你喜欢的客户端工具)

  

mysql -u USERNAME -pPASSWORD -h HOSTNAMEORIP DATABASENAME

请注意:

1)。 请记住在连接到RDS之前将current ip添加到RDS的安全组入站

2)。除了USERNAME之外,您还可以在RDS console上获取相关信息(安全组PASSWORD ...等)。 PASSWORD应该是您为实例创建的那个。 HOSTNAMEORIP是控制台上的“端点”(没有端口)。

3)。 -p和PASSWORD之间没有空格。它正是-pPASSWORD

使用您熟悉的工具连接到mysql后,您需要给它一些命令:

# set character set and collation for database
mysql> alter database DATABASENAME CHARACTER SET utf8 COLLATE utf8_unicode_ci;
--------
# set character set and collation for new records in a table
mysql> ALTER TABLE TABLENAME CHARACTER SET utf8 COLLATE utf8_unicode_ci;
# set character set and collation for existing records in a table
mysql> ALTER TABLE TABLENAME CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; 

如果你有很多表,你可能想写一个脚本来完成这个任务。但是,这不在答案的范围内。

完成上述配置后,您应该能够使用汉字摇滚!

答案 1 :(得分:5)

如果您使用的是RDS,则可以为mysql实例设置参数组。

  1. 创建新的参数组
  2. 使用新参数组修改您的数据库实例
  3. 重启您的数据库实例
  4. 完成!它应该非常简单。你会什么时候到达那里。

答案 2 :(得分:2)

确保使用的是UTF-8字符集。

永久设置字符集的最简单方法是使用以下内容更新您的客户端my.cnf:

[client]
default-character-set=utf8

您可以在此处找到有关连接字符集的详细信息:http://dev.mysql.com/doc/refman/5.5/en/charset-connection.html

使用MySQL API函数(例如PHP客户端)时,您可以通过发送查询来设置连接字符集

SET NAMES utf8

您可以按照以下博客将Amazon RDS配置为使用Utf-8字符集: http://matthew.mceachen.us/blog/howto-configure-an-amazon-rds-instance-to-use-utf-8-925.html

我希望这会有所帮助。

相关问题