😵

Dockerで導入したRedmineで絵文字が使えない事件

2025/03/02に公開

👀 概要

今回、DockerでRedmineのおひとり様インスタンスを建てました。
そこで問題が発生。
ウェルカムメッセージも文書も何もかも絵文字が使えない!!!

そこで行った方法を一応書いておきます...✏️

🚨 エラーメッセージ

2025-03-02 19:06:06 I, [2025-03-02T10:06:06.988922 #1]  INFO -- : [2ce21932-d86f-4b5b-b05f-3e99ca9d72e0]   Parameters: {"authenticity_token"=>"[REDACTED]", "document"=>{"category_id"=>"6", "title"=>"絵文字テスト", "description"=>"🚨"}, "commit"=>"作成", "project_id"=>"[REDACTED]"}
2025-03-02 19:06:07 I, [2025-03-02T10:06:07.020432 #1]  INFO -- : [2ce21932-d86f-4b5b-b05f-3e99ca9d72e0]   Current user: [REDACTED] (id=5)
2025-03-02 19:06:07 I, [2025-03-02T10:06:07.052295 #1]  INFO -- : [2ce21932-d86f-4b5b-b05f-3e99ca9d72e0] Completed 500 Internal Server Error in 63ms (ActiveRecord: 24.3ms (13 queries, 0 cached) | GC: 5.2ms)
2025-03-02 19:06:07 F, [2025-03-02T10:06:07.057026 #1] FATAL -- : [2ce21932-d86f-4b5b-b05f-3e99ca9d72e0]   
2025-03-02 19:06:07 [2ce21932-d86f-4b5b-b05f-3e99ca9d72e0] ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value: '🚨...' for column 'description' at row 1):
2025-03-02 19:06:07 [2ce21932-d86f-4b5b-b05f-3e99ca9d72e0] 
2025-03-02 19:06:07 Causes:
2025-03-02 19:06:07 [2ce21932-d86f-4b5b-b05f-3e99ca9d72e0] Mysql2::Error (Incorrect string value: '🚨...' for column 'description' at row 1)

エラーメッセージを見てみると、「Incorrect string value」というエラーが出ています。
これはMySQLの文字セットが絵文字に対応していないということみたい。

☝️ 手順

  1. MySQLの文字セット設定を確認する
    $ docker ps    # MySQLのコンテナIDを取得
    $ docker exec -it {コンテナID} bash
    $ mysql -p
    Enter password: {パスワード入力}
    mysql> SHOW VARIABLES LIKE 'character_set%';
    
    character_set_databasecharacter_set_serverutf8の場合、絵文字が扱えないのでutf8mb4に変更する必要があります。
    変更する方法は他の人も投稿していると思うので割愛。
    詳細な手順は割愛しますが、my.cnfの設定ファイルに下記があるか確認。
    my.cnf
     [mysqld]
     character-set-server = utf8mb4
     collation-server = utf8mb4_unicode_ci
    
  2. Redmineの設定を変更する
    データベース関連の設定はconfig/database.ymlで管理されています。
    (僕は/usr/src/redmine/config/database.ymlにありました。)
    config/database.yml
    development:
      adapter: mysql2
      encoding: utf8mb4    # encodingをutf8mb4に明示的に指定する!
      database: [REDACTED]
      username: [REDACTED]
      password: [REDACTED]
      host: [REDACTED]
    
  3. コンテナをRestartする。
    docker-compose restart
    
  4. 完了!

📕 まとめ

Dockerを最近触れ始めたので右も左もわからず大焦りでしたが、なんとか絵文字問題を解決することができました...
頑張って知識つけていこうと思います🤦‍♂️

Discussion