Mysql存儲emoji表情的兩種方式

  最近在做數據遷移,原先有一個字段的類型爲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;

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章