Exception in thread "main" org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [update user_info set nick_name = ?, is_regular = ? where uid = ? ]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE8\x97\xA4\xE5\x8E\x9F...' for column 'nick_name' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE8\x97\xA4\xE5\x8E\x9F...' for column 'nick_name' at row 1
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:605)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:818)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:874)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:882)
處理一個業務,需要存入用戶暱稱,有些用戶暱稱是Emoji表情,用默認utf8字符集就無法寫入,上網查了下,把相應字段字符集修改成utf8mb4即可。
參考:http://blog.itpub.net/26230597/viewspace-1243233/
文中需要把字段、表和DB字符集都修改成utf9mb4,但我實際測試只需要修改相應字段就行了,也不需要重啓DB,沒必要影響其他業務。