MySql中報錯:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xBB' for column

來源:互聯網
上載者:User

標籤:

問題描述: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.