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个字节,导致出错。
  • 相关阅读:
    牛客网 二叉树的镜像 JAVA
    牛客网 反转链表 JAVA
    牛客网 调整数组顺序使奇数位于偶数前面 JAVA
    Integer to Roman LeetCode Java
    Valid Number leetcode java
    Longest Common Prefix
    Wildcard Matching leetcode java
    Regular Expression Matching
    Longest Palindromic Substring
    Add Binary LeetCode Java
  • 原文地址:https://www.cnblogs.com/alter888/p/9086915.html
Copyright © 2011-2022 走看看