標籤:mysql
最近在做資料移轉,原先有一個欄位的類型為clob,遷移後的欄位類型為varchar,blob轉化成字串資料後,發現有emoji表情存在,導致資料移轉失敗。失敗的原因是mysql資料庫中設定的utf-8類型是3個位元組,而emoji表情的utf-8是4個位元組,所以無法傳入。
要使mysql能儲存emoji表情,需要資料庫的版本在5.5以上。
為瞭解決問題,主要有兩種方式:
第一種方式是修改欄位的編碼。
第二種方式是修改設定檔。
第一種方式:親測可用
1)修改對應表欄位的編碼類別型
ALTER TABLE table_name MODIFY COLUMN mark varchar(1000) CHARACTER
SET utf8mb4 COLLATE utf8mb4_unicode_ci
DEFAULT NULL COMMENT ‘備忘‘;
再做如下設定:
SET NAMES utf8mb4;
之後再把clob類型轉成char類型[convert(mark,char)]插入表中的欄位就可以了。
第二種方式:因為缺乏測試環境,所以暫未測試
1)停止mysql資料庫
2 )修改 my.cnf或者mysql.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‘
3) 重新啟動mysql資料庫
4) 檢查字元集,更改其他的字元集
SHOW VARIABLES WHERE Variable_name LIKE ‘character\_set\_%‘ OR Variable_name LIKE ‘collation%‘;
修改資料庫字元集:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
修改表的字元集:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
修改欄位的字元集:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
本文出自 “三國冷笑話” 部落格,請務必保留此出處http://myhwj.blog.51cto.com/9763975/1869042
Mysql儲存emoji表情的兩種方式