微信昵称中包含表情导致无法插入数据库
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