一、问题
org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xE5\xB0\x8F\xE5\xB0\x8F...' for column 'nickname' at row 1 ### The error may exist in com/xxxde/mapper/UserMapper.java (best guess) ### The error may involve com.xxxde.mapper.UserMapper.update-Inline ### The error occurred while setting parameters ### SQL: update user set nickname=?,email=?,update_time=? where id=? ### Cause: java.sql.SQLException: Incorrect string value: '\xE5\xB0\x8F\xE5\xB0\x8F...' for column 'nickname' at row 1 ; uncategorized SQLException; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE5\xB0\x8F\xE5\xB0\x8F...' for column 'nickname' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE5\xB0\x8F\xE5\xB0\x8F...' for column 'nickname' at row 1 at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) at com.sun.proxy.$Proxy70.update(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:67) at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:145) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86) at com.sun.proxy.$Proxy81.update(Unknown Source) at com.xxxde.service.impl.UserServiceImpl.update(UserServiceImpl.java:35) at com.xxxde.controller.UserController.update(UserController.java:85) at com.xxxde.controller.UserController$$FastClassBySpringCGLIB$$4bed1057.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) at com.xxxde.controller.UserController$$EnhancerBySpringCGLIB$$fd977c88.update(<generated>)
二、解决方法
这个错误是由于数据库中的某些字符无法正确存储导致的。在这种情况下,问题出现在nickname
列中,因为它包含了不正确的字符串值。为了解决这个问题,你可以尝试以下方法:
-
检查你的应用程序代码,确保在插入或更新数据时,
nickname
字段的值是正确的。如果可能的话,对输入进行清理和验证,以确保它们符合预期的格式。 -
更改数据库表结构,将
nickname
列的字符集更改为utf8mb4
,以支持更多的Unicode字符。例如,如果你使用的是MySQL数据库,可以使用以下SQL命令来修改表结构: -
ALTER TABLE user MODIFY nickname VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;