微信昵称中表情保存到数据库问题

微信昵称中包含表情导致无法插入数据库

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8E\x80' for column 'wechat_nick_name'

注意

修改微信昵称后,获取微信昵称和头像是有缓存的,我这次是1个小时,缓存就刷新了

解决步骤

  • 修改对应表中的编码
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 修改对应字段中的编码
ALTER TABLE table_name CHANGE column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 修改连接池中配置(我使用的是druid)
spring:
 datasource:
   druid:
     connection-init-sqls: set names utf8mb4
  • 修改数据库连接url
  datasource:
   type: com.alibaba.druid.pool.DruidDataSource
   driver-class-name: com.mysql.cj.jdbc.Driver
   url: jdbc:mysql://127.0.0.1:3306/databaseName?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true

其中autoReconnect=true

总结,推荐数据库设计时,使用utf8mb4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值