报错现象:
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [INSERT INTO B_ITEM_ORDER66 (ORDER_SERIAL_NUMBER,ORDER_CODE,ITEM_CODE,ITEM_NAME,B_CUST_NO,S_CUST_NO, UNIT_PRICE,NUMBER,FREIGHT_PRICE,TOTAL_PAY_PRICE,PAYMENT_METHOD, ORDER_STATUS,CUST_NAME,MEMBER_PHONE,S_ADDRESS,CREATE_TIME, LASTUP_TIME,B_MESSAGE,EVALUATION_STATUS,TRANSPORDCODE,ORDER_SOURCE) VALUES (?,?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,?)]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xF0\x9F\x99\x8F\xF0\x9F...' for column 'B_MESSAGE' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xF0\x9F\x99\x8F\xF0\x9F...' for column 'B_MESSAGE' at row 1
原因:
\xF0\x9F\x99\x8F\xF0\x9F是十六进制,数据库默认的字符集编码是utf8,无法识别十六进制的数据。
解决方法:
将数据库的字符集由utf8升级到utf8mb4。
升级方案:
-
修改数据库字符集character-set-server=utf8mb4 重启数据库生效。
-
修改database 的字符集为 utf8mb4 alter database dbname character set utf8mb4
-
修改表的字符集 为utf8mb4 , alter table character set = utf8mb4
ALTER TABLE bargain_msg_receive CONVERT TO CHARACTER SET utf8mb4;
http://vivisidea.iteye.com/blog/1395571
http://www.jianshu.com/p/20740071d854
解决Unicode字符插入MySQL错误
本文介绍了一种在使用Spring框架进行数据库操作时遇到的问题,即在尝试将含有特殊Unicode字符的数据插入MySQL数据库时出现的Incorrect string value错误。文章分析了错误产生的原因,并给出了详细的解决方案,包括如何将MySQL数据库的字符集从utf8升级到utf8mb4的具体步骤。
1419

被折叠的 条评论
为什么被折叠?



