SQL state [HY000]; error code [1366]
Caused by: org.springframework.jdbc.UncategorizedSQLException:
### Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xE5\xB9\xB4\xE6\xAF\x95...' for column 'userData' at row 1
### The error may involve HbbResourceVideoInfo.replaceHBBUserInfo-Inline
### The error occurred while setting parameters
### SQL: replace into tbl_hbb_user_info (mobile,userData) values(?,?)
### Cause: java.sql.SQLException: Incorrect string value: '\xE5\xB9\xB4\xE6\xAF\x95...' for column 'userData' at row 1
; uncategorized SQLException for SQL []; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE5\xB9\xB4\xE6\xAF\x95...' for column 'userData' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE5\xB9\xB4\xE6\xAF\x95...' for column 'userData' at row 1
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:74)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:399)
at com.sun.proxy.$Proxy27.insert(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:253)
at com.allcam.andedu.abc.daoall.bdb.dao.impl.HbbResourceVideoDaoImpl.replaceHBBUserInfo(HbbResourceVideoDaoImpl.java:135)
... 71 more
Caused by: java.sql.SQLException: Incorrect string value: '\xE5\xB9\xB4\xE6\xAF\x95...' for column 'userData' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1094)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4226)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4158)
Map map = new HashMap<>();
map.put("mobile", userInfo.getPhone());
map.put("userData", StringUtil.encodeEmoji(JsonParseUtil.obj2Json(userInfo)));
HbbResourceVideoDao.replaceHBBUserInfo(map);
public static String encodeEmoji(String orgStr)
{
if (StringUtil.isNull(orgStr))
{
return orgStr;
}
String temp = orgStr;
Pattern pattern = Pattern.compile("[^\u0000-\uffff]", Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(orgStr);
while (matcher.find())
{
StringBuilder sb = new StringBuilder("[em:");
String mStr = matcher.group();
for (int i = 0; i < mStr.length(); i++)
{
int emoji = mStr.charAt(i);
if (i < mStr.length() - 1)
{
sb.append(emoji).append('-');
}
else
{
sb.append(emoji).append(']');
}
}
temp = temp.replaceAll(mStr, sb.toString());
}
return temp;
}
public static String decodeEmoji(String orgStr)
{
if (StringUtil.isNull(orgStr))
{
return orgStr;
}
String temp = orgStr;
Pattern pattern = Pattern.compile("\\[em:[\\d\\-]+\\]", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(orgStr);
while (matcher.find())
{
StringBuilder sb = new StringBuilder("\\[em:");
StringBuilder emojiSb = new StringBuilder();
String mStr = matcher.group();
String[] emojis = mStr.substring(4, mStr.length() - 1).split("-");
for (int i = 0; i < emojis.length; i++)
{
int emoji = Integer.parseInt(emojis[i]);
emojiSb.append((char)emoji);
if (i < emojis.length - 1)
{
sb.append(emoji).append("\\-");
}
else
{
sb.append(emoji).append("\\]");
}
}
temp = temp.replaceAll(sb.toString(), emojiSb.toString());
}
return temp;
}
另外一个问题
Data truncation: Data too long for column 'userData' at row 1
text --》 longtext