发送表情tomcat报错,请问怎么解决?数据库编码已经改为utf8mb4,连接字?报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

发送表情tomcat报错,请问怎么解决?数据库编码已经改为utf8mb4,连接字?报错

爱吃鱼的程序员 2020-06-09 13:51:53 100

错误信息如下:

2016-06-20 10:43:55,294 ERROR com.bsteel.vs.webapp.controller.BaseController:181 - org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [INSERT INTO vsns_topic SET `from`=?,`type`=?,`uid`=?,`videoid`='0',`lastupdate`=UNIX_TIMESTAMP(),`dateline`=UNIX_TIMESTAMP(),`totid`=?,`touid`=?,`anonymous`='0',`item`='',`item_id`='0',`channel_id`='0',`username`=?,`musicid`='0',`roottid`='0',`content`=?,`postip`=?,`post_ip_port`='64020']; SQL state [HY000]; error code [1366]; Incorrect string value: '\xF0\x9F\x98\x81\xF0\x9F...' for column 'content' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x81\xF0\x9F...' for column 'content' at row 1

SQL 应用服务中间件 数据库
分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-09 13:52:12

    我已经解决了,看地址

    http://www.cnblogs.com/yjmyzz/p/mysql-utf8mb4-jdbc.html

    ==>3093IZVc: 2016-06-2010:43:55,294ERRORcom.bsteel.vs.webapp.controller.BaseController:181-org.springframework.jdbc.UncategorizedSQLException:PreparedStatementCallback;uncategorizedSQLExceptionforSQL[INSERTINTOvsns_topicSET`from`=?,`type`=?,`uid`=?,`videoid`='0',`lastupdate`=UNIX_TIMESTAMP(),`dateline`=UNIX_TIMESTAMP(),`totid`=?,`touid`=?,`anonymous`='0',`item`='',`item_id`='0',`channel_id`='0',`username`=?,`musicid`='0',`roottid`='0',`content`=?,`postip`=?,`post_ip_port`='64020'];SQLstate[HY000];errorcode[1366];Incorrectstringvalue:'\xF0\x9F\x98\x81\xF0\x9F...'forcolumn'content'atrow1;nestedexceptionisjava.sql.SQLException:Incorrectstringvalue:'\xF0\x9F\x98\x81\xF0\x9F...'forcolumn'content'atrow1
    ==>3093IZVc: 2016-06-2010:43:55,294ERRORcom.bsteel.vs.webapp.controller.BaseController:183-org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)
    ==>3093IZVc: 2016-06-2010:43:55,295ERRORcom.bsteel.vs.webapp.controller.BaseController:183-org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
    ==>3093IZVc: 2016-06-2010:43:55,295ERRORcom.bsteel.vs.webapp.controller.BaseController:183-org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
    ==>3093IZVc: 2016-06-2010:43:55,296ERRORcom.bsteel.vs.webapp.controller.BaseController:183-org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:660)
    ==>3093IZVc: 2016-06-2010:43:55,298ERRORcom.bsteel.vs.webapp.controller.BaseController:183-org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:909)
    ==>3093IZVc: 2016-06-2010:43:55,298ERRORcom.bsteel.vs.webapp.controller.BaseController:183-org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:970)
    ==>3093IZVc: 2016-06-2010:43:55,299ERRORcom.bsteel.vs.webapp.controller.BaseController:183-org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:980)
    ==>3093IZVc: 2016-06-2010:43:55,299ERRORcom.bsteel.vs.webapp.controller.BaseController:183-com.bsteel.vs.dao.impl.TopicDaoImpl.saveTopic(TopicDaoImpl.java:35)
    看一下你要保存表情的字段编码是不是utf8mb4可以考虑把 content字段用base64转码后再存储。表情字段一般用blob类型存储,查询的时候再转一下即可
    这是重构的项目,别人用php都可以的,用java就不可以了

    这个错误应该是很数据库有关系。前不久刚碰到过。

    https://segmentfault.com/a/1190000000616820

    这个帖子整理的还算比较完整的。

    很多人在使用mysql数据库的时候遇到编码问题,在mysql数据库使用时,
    字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连接级
    你需要查下你各级别字符集跟校对规则,修改成你需要的字符集及校对规则就可以了。

    参考自:
    MySQL的字符集和校对
    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程