1. 程式人生 > 其它 >mysql儲存emoji表情報錯問題

mysql儲存emoji表情報錯問題

emoji表情使用mysql的預設字元設定UTF-8會報錯:

Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xE6\x88\x91\xE4\xBB\xAC...' for column 'xx' at row 1

這種原因是字符集編碼導致的。
1、驗證字符集
首先進入mysql:

mysql  -u root -p

進入之後輸入以下:

show variables like '%character%';

這裡是輸入命令之後的檢視:

mysql> show variables like '%character%';
+--------------------------+--------------------------------------------------------+
| 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     | utf8mb3                                                |
| character_sets_dir       | /usr/local/mysql-8.0.29-macos12-x86_64/share/charsets/ |
+--------------------------+--------------------------------------------------------+
8 rows in set (0.01 sec)

2、進入my.cnf

vim /etc/my.cnf

編輯my.cnf
[client]
default-character-set=utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake = true

[mysql]
default-character-set = utf8mb4

重啟資料庫服務即可正常儲存表情符號,當前版本是: mysql Ver 8.0.29 for macos12 on x86_64 (MySQL Community Server - GPL)