Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
群集中的aws aurora rds(mysql)无法插入表情符号_Mysql_Amazon Web Services_Emoji_Amazon Aurora - Fatal编程技术网

群集中的aws aurora rds(mysql)无法插入表情符号

群集中的aws aurora rds(mysql)无法插入表情符号,mysql,amazon-web-services,emoji,amazon-aurora,Mysql,Amazon Web Services,Emoji,Amazon Aurora,我正在集群中使用极光rds(mysql),无法插入表情符号。我尝试插入的列具有排序规则: utf8mb4-utf8mb4\u unicode\u ci 我尝试过使用客户端插入,也尝试过从mysql workbench编写查询,但在这两种情况下我都看到了????在野外 我已更新了表格默认字符集: utf8mb4 和默认排序规则: utf8mb4_unicode_ci 但还是得到了???而不是表情符号 编辑1: 我已尝试编辑集群的参数组,并将所有字符集值设置为utf8mb4,将所有排序规则值设置为u

我正在集群中使用极光rds(mysql),无法插入表情符号。我尝试插入的列具有排序规则:

utf8mb4-utf8mb4\u unicode\u ci

我尝试过使用客户端插入,也尝试过从mysql workbench编写查询,但在这两种情况下我都看到了????在野外

我已更新了表格默认字符集: utf8mb4 和默认排序规则: utf8mb4_unicode_ci

但还是得到了???而不是表情符号

编辑1:


我已尝试编辑集群的参数组,并将所有字符集值设置为utf8mb4,将所有排序规则值设置为utf8mb4_unicode_ci,但仍不起作用。

更改表的默认字符集不会改变任何现有列。您可以运行
SHOW CREATE TABLE MyTable
查看差异

例如,我们可以使用老式的字符集创建一个表:

mysql> create table MyTable (string1 varchar(100) ) default character set = latin1;

mysql> show create table MyTable\G
*************************** 1. row ***************************
       Table: MyTable
Create Table: CREATE TABLE `MyTable` (
  `string1` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
接下来,我们将更改表的默认值,但我们看到这不会更改列。现有列自动获得一个选项,显示它实际用于字符集的内容,因为它现在不同于表默认值:

mysql> alter table MyTable default charset = utf8mb4;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table MyTable\G
*************************** 1. row ***************************
       Table: MyTable
Create Table: CREATE TABLE `MyTable` (
  `string1` varchar(100) CHARACTER SET latin1 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
默认值用于随后添加到表中的列:

mysql> alter table MyTable add column string2 varchar(100);
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table MyTable\G
*************************** 1. row ***************************
       Table: MyTable
Create Table: CREATE TABLE `MyTable` (
  `string1` varchar(100) CHARACTER SET latin1 DEFAULT NULL,
  `string2` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
要转换现有列,请使用“转换为字符集”。这将重写表,并在需要时转换每列的现有数据:

mysql> alter table MyTable convert to character set utf8mb4;
Query OK, 0 rows affected (0.09 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table MyTable\G
*************************** 1. row ***************************
       Table: MyTable
Create Table: CREATE TABLE `MyTable` (
  `string1` varchar(100) DEFAULT NULL,
  `string2` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

现在,两列都没有说明各自的字符集,因为它们与表的默认值相匹配。

您的集群参数组应该设置以下选项:

  • 字符集客户端:utf8mb4
  • 字符集连接:utf8mb4
  • 字符集数据库:utf8mb4
  • 字符集服务器:utf8mb4
  • 排序规则\u连接:utf8mb4\u unicode\u ci
  • 排序规则\u服务器:utf8mb4\u unicode\u ci
可能需要在更新后重新启动实例。连接到群集时,您希望为连接设置正确的排序规则,如下所示:

SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
如果在此之后运行
显示变量,如“%collation%”
,您应该会看到三个具有正确排序规则的变量(utf8mb4\u unicode\u ci)


您还需要将表和列转换为正确的字符集和排序规则,这已经在DBA堆栈交换中得到了回答:

这是有用的好信息。然而,就我而言,这并没有解决问题。使用上面的ALTERTABLE语句更改表的编码不允许我仍然输入表情符号。我得到了????用于表情符号条目。奇怪的是,有一些表情符号确实显示为表情符号,但大多数都被问号取代在客户端会话中,并确保应用程序支持utf8mb4,以便字符串从输入一直编码到数据库,根据你说的,我已经更新了包含RDS的集群的参数组,并设置了所有字符集和排序规则值,但仍然不起作用。我相信这与“设置名称utf8mb4”相同。我认为这可能是一个极光问题。我已经编辑了问题以反映我所做的工作。我已经设置了所有群集参数组选项。在init_connect下的instance参数组中,我之前将该值设置为set NAMES utf8mb4,但在阅读您的帖子后,更新为set NAMES utf8mb4 COLLATE utf8mb4\u unicode\u ci。重新启动,但仍不工作。我确信数据库中的表具有正确的字符集和排序规则。我不确定我还能尝试什么。至于像“%collation%”这样的SHOW变量,这是mysql的命令提示符语句吗?我试着在mysql工作台中显示类似“collation”的变量,结果显示了一个空的replykoay。终于开始工作了。必须在控制台中输入集合名称utf8mb4 COLLATE utf8mb4_unicode_ci,因为init_connect参数没有任何效果。不确定这是否是因为init_connect是在实例中定义的,而不是在集群中定义的,但无论如何都要感谢您的帮助。@alionsego很高兴听到这个消息!对我来说,有两个名为“default.aurora5.6”的参数组-只有类型为“DB cluster parameter group”的参数组在我进行更改后才具有这些选项。排序规则数据库仍然是拉丁语1瑞典语ci。我能做什么?