报错信息:
java.lang.RuntimeException: java.sql.SQLException:
Incorrect string value: '\\xF0\\x9F\\x9A\\xB9\\xE4\\xBC...' for column 'xxx' ...
引起的原因:
在varchar类型的字段里面插入的text包含emoj表情。
MySQL 5.5.3 版本以下,CHARACTER SET 为 utf8 的字段最长只有3个字节。
查看MySQL版本可用以下命令:
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper
Connection id: 5
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.17-0ubuntu0.16.04.1 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 1 hour 28 min 58 sec
Threads: 1 Questions: 28 Slow queries: 0 Opens: 116 Flush tables: 1 Open tables: 29 Queries per second avg: 0.005
--------------
查看相关字符集设置信息(下面是我修改后的,修改前utf8mb4处都为utf8):
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
查看所有字符集信息: