zoukankan      html  css  js  c++  java
  • MySql中报错:java.sql.SQLException: Incorrect string value: 'xF0x9Fx90xBB' for column

    问题描述:
    java.sql.SQLException: Incorrect string value: 'xF0x9Fx90xBB' for column 'nickName' 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)
            at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)
            at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)
            at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2840)
            at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)
            at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1302)
            at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:55)
            at com.sun.proxy.$Proxy58.execute(Unknown Source)
            at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:41)
            at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:66)
            at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:45)
            at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:100)
            at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75)
    解决方法:
    1.建表的时候添加如下限制:ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
    2.在my.cnf上修改如下:
    ------------------my.cnf------------------------------------------------------
    # For advice on how to change settings please see
    # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set = utf8mb4
    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    # innodb_buffer_pool_size = 128M
     
    # Remove leading # to turn on a very important data integrity option: logging
    # changes to the binary log between backups.
    # log_bin
    # These are commonly set, remove the # and set as required.
    # basedir = .....
    # datadir = .....
    # port = .....
    # server_id = .....
    # socket = .....
     
    # Remove leading # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M
     
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    log-error=/var/log/mysqld.log
    long_query_time=3
     
    [mysqld]
    character-set-client-handshake = FALSE
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    init_connect='SET NAMES utf8mb4'
     
    #log-slow-queries= /usr/local/mysql/log/slowquery.log
     ------------------------------------------------------------------------
    重启mysql服务,service mysql stop;  service mysql start;问题解决。
    造成这个问题的原因(网上找的):
    mysql中规定utf8字符的最大字节数是3,但是某些unicode字符转成utf8编码之后有4个字节,导致出错。
     
  • 相关阅读:
    [置顶] Guava学习之Lists
    Study notes for B-tree and R-tree
    uva 620 Cellular Structure
    [置顶] 程序员面试之道(《程序员面试笔试宝典》)之看着别人手拿大把的offer,不淡定了怎么办?
    HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛)
    有N个正实数(注意是实数,大小升序排列) x1 , x2 ... xN,另有一个实数M。 需要选出若干个x,使这几个x的和与 M 最接近。 请描述实现算法,并指出算法复杂度
    C# 未能加载文件或程序集“MySQLDriverCS..." 错误解决
    LA 3942 Remember the Word(前缀树&树上DP)
    原根-快速求解一个数的原根
    线程初步了解
  • 原文地址:https://www.cnblogs.com/lowwen/p/5645242.html
Copyright © 2011-2022 走看看