Mysql
無法在 mysql 5.6 中插入 utf8mb4 字元
最近我在我的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%”; +----------------------+--------------------+ | 變數名 | 價值 | +----------------------+--------------------+ | collation_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
試一試 !!!