羽中飞人 2023-08-27 17:17 采纳率: 48.1%
浏览 9
已结题

阿里云RDS的MYSQL数据库无法储存8节及以上的EMOJI表情

阿里云的MYSQL数据库
储存含有4节的EMOJI表情的字符窜没有问题

img

但有些EMOJI表情是8节或者16节以上的,就会报错,报错信息如下

img

我做过以下尝试,设置阿里云的RDS数据库

img


没有什么用,谁能帮忙解决一下,谢谢!

  • 写回答

11条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2023-08-28 09:43
    关注

    确认字符集和编码设置:

    确保数据库、表格和列的字符集和编码设置为utf8mb4,这是适用于存储Emoji表情的字符集。不要使用utf8,因为它只支持3个字节的字符,无法正确存储Emoji。
    如果已经有数据,你可能需要进行字符集和编码的转换。可以使用ALTER TABLE命令进行转换。
    修改连接字符集:

    在应用程序连接数据库时,确保将连接的字符集设置为utf8mb4。这可以通过在连接数据库之后运行SET NAMES utf8mb4来实现。
    检查客户端和服务器版本:

    确保你的MySQL客户端和服务器版本都支持utf8mb4字符集。较旧的MySQL版本可能不支持该字符集。
    考虑存储长度:

    请注意,utf8mb4字符集下的某些Emoji表情可能占用4个字节或更多。这可能会影响列的存储长度和索引设置。
    调整最大数据包大小:

    在某些情况下,当存储较大的数据时,可能需要调整MySQL的最大数据包大小配置。
    以下是一个更详细的示例,说明如何更改表格字符集和编码:

    -- 更改数据库字符集
    ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    -- 更改表格字符集
    ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    -- 更改列字符集
    ALTER TABLE your_table_name MODIFY your_column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(10条)

报告相同问题?

问题事件

  • 系统已结题 9月6日
  • 已采纳回答 8月29日
  • 创建了问题 8月27日