utf8mb4不生效,昵称符号保存出错的问题
Mysql数据库设置的编码是utf8,表wxuser_info 字段nick_name中要插入类似💕🦄的内容,java后台报 java.sql.SQLException: Incorrect string value: ‘%E7%A7%8B%F0%9F%92%95%F0%9F%A6%84’ for column ‘nick_name’ at row 1。
解决方法:
1)修改数据库字段:
ALTER TABLE wxuser_info MODIFY COLUMN nick_name varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT ‘微信昵称’ ;
2)java中数据库连接设置
我项目基于spring-boot,用的是druid数据源:
在spring-context.xml里配置,必须配置connectionInitSqls属性才可以插入utf8mb4字符:
< bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!-- 此处省略一些配置 -->
<!--下面一行是关键-->
<property name="connectionInitSqls" value="set names utf8mb4" />
</bean>