Mysql

無法在 mysql 5.6 中插入 utf8mb4 字元

  • July 19, 2019

最近我在我的mysql數據庫中插入表情符號和其他4字節字元時遇到問題然後我發現我的mysql版本是5.1並且它不支持utf8mb4所以我升級到支持utf8mb4的mysql 5.6並且在我的整理中我可以選擇選擇 utf8mb4.but 當我嘗試通過 phpmyadmin 直接在表行中插入時,我得到這個錯誤也提到了這個連結

      http://dba.stackexchange.com/questions/59126/set-value-of-character-set-client-to-utf8mb4


1 row affected.
     Warning: #1366 Incorrect string value: '\xF0\x9F\x9A\x8A k...' for column 'rajulp' at row 1

我搜尋了一下,發現這是因為數據庫不支持 utf8mb4 字元,然後我按照網際網路上的一些教程更新了 my.cnf 文件並重新啟動了 mysql 伺服器和伺服器。

      https://mathiasbynens.be/notes/mysql-utf8mb4

我嘗試了幾乎所有可能的組合,但是當我在 sql 中鍵入它時,它再次拋出最大值為 utf8,因為我無法插入 eboji 和幾個 4 字節字元。

Punjab me 1Train🚊 k niche 100 👳Sardar aa gaye..

mysql中以下命令的輸出

SHOW VARIABLES LIKE 'char%'


 character_set_client  utf8
    character_set_connection   utf8
  character_set_database   utf8mb4
   character_set_filesystem    binary
   character_set_results   utf8
  character_set_server utf8mb4
 character_set_system  utf8
    character_sets_dir /usr/share/mysql/charsets/

請指導

我在安裝 MySQL 5.6.23 的 Ubuntu 時遇到了同樣的問題。

我必須編輯 /etc/mysql/my.conf 並將這些條目添加到這些部分:

[客戶]
預設字元集=utf8mb4

[mysqld]
字元集伺服器 = utf8mb4

[mysql]
預設字元集=utf8mb4

然後以root身份執行:service mysql restart

我的網路伺服器連接和我的本地(shell)mysql 連接都使用 utf8mb4。

插入到 some_table_name
(some_index_id,value_to_be_utf8mb4)
值(55,x'F09F9A8A');
從 some_table_name 中選擇 *;
| some_index_id | value_to_be_utf8mb4 |
| 55 | 🚊 |
1 行(0.00 秒)

以下來自mysql的新命令行實例:

mysql> 顯示變數,如“%coll%”;
+----------------------+--------------------+
| 變數名 | 價值 |
+----------------------+--------------------+
| collat​​ion_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
+----------------------+--------------------+
mysql> 顯示變數,如“%char%”;
+--------------------------+----------------------------+
| 變數名 | 價值 |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| 字元集連接 | utf8mb4 |
| 字元集數據庫 | utf8mb4 |
| 字元集文件系統 | 二進制 |
| 字元集結果 | utf8mb4 |
| character_set_server | utf8mb4 |
| 字元集系統 | utf8 |
| 字元集目錄 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

最後一點,根據 mysql 5.x 規範,“character_set_system”始終為“utf8”,這是正常的。

您仍然將character_set_client設置為utf8

首先確保 utf8mb4 存在

mysql> select * from information_schema.character_sets where CHARACTER_SET_NAME like 'utf8%';
+--------------------+----------------------+---------------+--------+
| CHARACTER_SET_NAME | DEFAULT_COLLATE_NAME | DESCRIPTION   | MAXLEN |
+--------------------+----------------------+---------------+--------+
| utf8               | utf8_general_ci      | UTF-8 Unicode |      3 |
| utf8mb4            | utf8mb4_general_ci   | UTF-8 Unicode |      4 |
+--------------------+----------------------+---------------+--------+
2 rows in set (0.00 sec)

mysql>

您可能需要執行以下操作之一

建議 #1

登錄mysql後執行

mysql> set character_set_client = 'utf8mb4';
mysql> show variables like 'character_set_client';

這肯定會確保您的客戶的會話正在使用utf8mb4

建議 #2

用命令行上的字元集啟動mysql客戶端

用這個測試它

mysql -uroot -p --default-character-set=utf8mb4 -ANe"show variables like 'character_set_client'"

它要麼迴聲

+----------------------+---------+
| character_set_client | utf8mb4 |
+----------------------+---------+

要麼

mysql: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file

如果設置了character_set_client,則執行

mysql -uroot -p --default-character-set=utf8mb4

試一試 !!!

引用自:https://dba.stackexchange.com/questions/89355