关于java.sql.SQLException: Incorrect string value的解决方法

来源:互联网 发布:什么是贵族气质知乎 编辑:程序博客网 时间:2024/06/05 13:33

近期在做业务测试时,出现java.sql.SQLException: Incorrect string value,其具体信息如下:

Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x81\xF0\x9F...' for column 'content' at row 1at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164)at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2838)at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1307)at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:44)at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:69)at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:48)at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:105)at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:71)at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:152)at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:141)at sun.reflect.GeneratedMethodAccessor274.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
通过网上查找资料,发现,在某些字符转化为Unicode编码时占用4个字符,而一般情况下Mysql默认的UTF8编码所允许的单个编码占用的长度为3个字节,每种编码的最大占用长度可用过命令为:
show character set

进行查询,查询的实例结果如下:


因此只要将该表的编码改为最大允许长度为4的编码格式即可;

0 0
原创粉丝点击