
# 更新emoji表情数据报错Error 1366
#### 场景描述
业务插入或更新带有emoji表情的数据时，报错Error 1366。
```
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xB0\xE5\xA4...' for column 'username' at row 1 ;
uncategorized SQLException for SQL []; SQL state [HY000]; error code [1366];  
Incorrect string value: '\xF0\x9F\x90\xB0\xE5\xA4...' for column 'username' at row 1;
```
#### 原因分析
RDS for MySQL的字符集配置有误：
- emoji表情为特殊字符，需要4字节字符集存储。
- 该报错场景下MySQL字符集为utf-8，最多支持3个字节，需要修改为支持4个字节的字符集utf8mb4。
 
#### 解决方案
1. 将存储emoji表情的字段的字符集修改为utf8mb4。 如果涉及的表和字段比较多，建议把对应表、数据库的编码也设置为utf8mb4。参考命令：
   **ALTER DATABASE database_name CHARACTER SET= utf8mb4 COLLATE= utf8mb4_unicode_ci;**
   **ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;**
   **ALTER TABLE table_name MODIFY 字段名 VARCHAR(128) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;**
   
2. 若对应字段的字符集已经是utf8mb4，则为客户端或MySQL服务端字符集转换问题，将客户端和MySQL服务端的字符集都设置为utf8mb4。
 
