Mysql儲存emoji表情的兩種方式

來源:互聯網
上載者:User

標籤: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表情的兩種方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.