mysqlは微信の表情文字emojiの問題解決策を保存できません

6228 ワード

問題の説明:
微信ニックネームにemoji表情文字がある場合、mysqlデータベースは異常を更新します.
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for colum n 'nickname' at row 1

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581)

原因分析:mysqlが設定した文字セットがutf 8 mb 4をサポートしていないためです.
解決策:
一、mysql serverを修正する
プロファイルの変更/etc/my.cnf(windowはmy.ini)
[client]

default-character-set = utf8mb4

[mysql]

default-character-set = utf8mb4

[mysqld]

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

注意:mysqlがutf 8 mb 4をサポートするバージョンは5.5.3+で、より新しいバージョンにアップグレードする必要があります.
SHOW VARABLES WHERE Variable_name LIKE ‘version%’;
データベースとテーブル、フィールドの文字セットsqlを実行します.
ALTER DATABASE t_yown_userdb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

ALTER TABLE t_yown_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

alter table t_yown_user modify `NICKNAME` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '  ';

mysqlを再起動するには:
service mysqld stop
service mysqld start
修正されたかどうかを確認します.
SHOW VARIABLES WHERE Variable_name LIKE ‘character_set_%’ OR Variable_name LIKE ‘collation%’
クエリの結果は次のとおりです(すべての結果セットutf 8 mb 4):
character_set_client    utf8mb4

character_set_connection    utf8mb4

character_set_database    utf8mb4

character_set_filesystem    binary

character_set_results    utf8mb4

character_set_server    utf8mb4

character_set_system    utf8

character_sets_dir    /usr/share/mysql/charsets/

collation_connection    utf8mb4_general_ci

collation_database    utf8mb4_unicode_ci

collation_server    utf8mb4_unicode_ci

二、mysql駆動、接続列を確認する:
mysql connectionバージョンが5.1.13より高いことを確認します.そうしないとutf 8 mb 4を試用できません.
接続列jdbcを確認する.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/t_yown_userdb?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE
最後にアプリケーションを再起動したほうがいいです.順調に!