Mysqlデータベースemojiと4バイト文字処理の保存とクエリー

974 ワード

title:mysql 4バイト表情とワード、tags:[mysql,database]categories:[idea,macosx,mysql]date:2018-11-13 00:15:30
私の個人ブログsourcodにアクセスしてください
  • 最近古文図書データ処理プロジェクトを行っており、構造化して表に保存する必要がある.
  • 古い文字がデータを保存している間にIncorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...'のエラーが発生しました.

  • 資料を検索するとmysql utf-8文字セットは4バイトの「文字」保存をサポートしていないことがわかりました.
    ソリューション:
  • データベースとテーブル文字セットをutf 8 mb 4
  • に変更
    ALTER DATABASE      CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
    ALTER TABLE    CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  • を変更した後はまだ使いにくいことに気づき、保存方法を実行する前にset names utf8mb4文を実行すればよい.

  • 保存に成功した後、フィールドに基づいてクエリーし、Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operationとエラーを報告する必要があります.
    ソリューション:資料がバイナリクエリを使用していることが判明しました.
    BINARY `nickname` LIKE '%?%';
    

    このように
    注意nicknameの両側に``を付ける必要があります