標籤:
問題描述:java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x90\xBB‘ 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_TABLESlog-error=/var/log/mysqld.loglong_query_time=3 [mysqld]character-set-client-handshake = FALSEcharacter-set-server =
utf8mb4collation-server =
utf8mb4_unicode_ciinit_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個位元組,導致出錯。
MySql中報錯:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xBB' for column