专栏首页一个会写诗的程序员的博客彻底解决 MYSQL: Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x80\xE3\x80...

彻底解决 MYSQL: Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x80\xE3\x80...

Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x80\xE3\x80...' for column 'show_content' at row 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2487)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
    at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2079)
    at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2013)
    at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5104)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1998)
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175)
    ... 64 more

今天在爬取文章的时候,在将数据插入mysql数据库的时候,出现了Incorrect string value: '\xF0\x9F\x98\xAD",...' for column 'commentContent' at row 1 这个错误,Google了下发现原来是因为数据库编码问题导致的,原因在于我们的评论数据中存在emoj表情,而这些表情是按照四个字节一个单位进行编码的,而我们通常使用的utf-8编码在mysql数据库中默认是按照3个字节一个单位进行编码的,正是这个原因导致将数据存入mysql数据库的时候出现错误,那么这个问题我们应该怎么解决呢?

分为下面三个步骤来解决:

    (1)修改mysql数据库的编码为uft8mb4
    (2)修改数据表的编码为utf8mb4
    (3)修改连接数据库的连接代码

其中:

(1)修改mysql数据库的编码为uft8mb4

ALTER SCHEMA ak47_cms DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;

修改方法: 参看:http://blog.csdn.net/poice00/article/details/52129351

(2):修改数据表的编码为utf8mb4 执行命令:ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4;

(3):修改连接数据库的连接代码

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mysql max_allowed_packet过小引起的问题

    com.mysql.jdbc.PacketTooBigException: Packet for query is too large (5366885 > 4...

    一个会写诗的程序员
  • java.sql.BatchUpdateException: Can not issue SELECT via executeUpdate() or executeLargeUpdate().

    java.sql.BatchUpdateException: Can not issue SELECT via executeUpdate() or execu...

    一个会写诗的程序员
  • Caused by: android.os.NetworkOnMainThreadException

    Caused by: android.os.NetworkOnMainThreadException at android.os.StrictMode$And...

    一个会写诗的程序员
  • mysql max_allowed_packet过小引起的问题

    com.mysql.jdbc.PacketTooBigException: Packet for query is too large (5366885 > 4...

    一个会写诗的程序员
  • quartz部署Table 'heart_beat.QRTZ_LOCKS' doesn't exist

    项目由win系统部署到linux系统下,启动项目报错如下: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSy...

    小柒2012
  • 缓存策略优化

    缓存介绍 这里是列表文本在高并发多用户的系统中常常会使用缓存来提升读写性能 这里是列表文本常见的如memcached, redis, 内存缓存等 ...

    冷冷
  • SpringBoot系列之JDBC数据访问

    SpringBoot jdbc是比较常用的内容,本博客通过实验并简单跟源码的方式进行介绍,希望可以帮助学习者更好地理解

    用户1208223
  • Spring Boot & MyBatis

    十毛
  • Mybatis Generator 使用com.mysql.cj.jdbc.Driver遇到的问题

    Mybatis Generator 使用com.mysql.cj.jdbc.Driver遇到的问题

    小忽悠
  • java.sql.SQLException: The server time zone value:xx异常

    但是,我们知道,北京所以东8区。所以修改为北京时间应该是:&serverTimezone=GMT%2B8

    凯哥Java

扫码关注云+社区

领取腾讯云代金券