プロジェクト

全般

プロフィール

Vote #76485

未完了

Mailhandler cannot handle 4-byte characters

Admin Redmine さんが約4年前に追加. 約4年前に更新.

ステータス:
New
優先度:
低め
担当者:
-
カテゴリ:
Database_21
対象バージョン:
-
開始日:
2022/05/09
期日:
進捗率:

0%

予定工数:
category_id:
21
version_id:
0
issue_org_id:
20143
author_id:
130396
assigned_to_id:
0
comments:
9
status_id:
1
tracker_id:
1
plus1:
0
affected_version:
closed_on:
affected_version_id:
94
ステータス-->[New]

説明

When receiving an e-mail containing a 4-byte character (an apple-emoji in the example), the mail-handler dies with

Mysql2::Error: Incorrect string value: '\xF0\x9F\x98\x89' for column 'description' at row 1: INSERT INTO issues (project_id, author_id, priority_id, tracker_id, status_id, subject, description, start_date, updated_on, created_on, lock_version) VALUES (15, 4, 2, 3, 1, 'Emoticon test', 'Here comes an emoji: ?~_~X~I', '2015-06-21', '2015-06-21 18:05:05', '2015-06-21 18:05:05', 0)

and no ticket is created.


journals

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Try utf8mb4 (#10772#note-7).
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Toshi MARUYAMA wrote:
> Try utf8mb4 (#10772#note-7).

In fact, that solves the problem, but it does not work for all tables:

MariaDB [redmine]> ALTER TABLE changesets CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

MariaDB [redmine]> ALTER TABLE schema_migrations CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

Wouldn't it be great to have this character encoding used per default or as an option for mysql? Four byte unicode characters are not that rare these days, especially in emails (where the emails client converts ASCII-things to utf8). Sorry if this is already possible, I'm using the great sameersbn Dockerfile for installing/running redmine.
--------------------------------------------------------------------------------
Ragnar Nevries wrote:
> Wouldn't it be great to have this character encoding used per default or as an option for mysql?

Redmine does not define creating database process.
I don't prefer defining MySQL encoding (#19742#note-3).

> I'm using the great sameersbn Dockerfile for installing/running redmine.
Please ask its maintainer.

--------------------------------------------------------------------------------
Ragnar Nevries wrote:
> Toshi MARUYAMA wrote:
> > Try utf8mb4 (#10772#note-7).
>
> In fact, that solves the problem, but it does not work for all tables:
>
> MariaDB [redmine]> ALTER TABLE changesets CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
> ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
>
> MariaDB [redmine]> ALTER TABLE schema_migrations CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
> ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
>
> Wouldn't it be great to have this character encoding used per default or as an option for mysql? Four byte unicode characters are not that rare these days, especially in emails (where the emails client converts ASCII-things to utf8). Sorry if this is already possible, I'm using the great sameersbn Dockerfile for installing/running redline.

It works for all tables, if you change the ROW_FORMAT in MySQL/MariaDB to DYNAMIC!
I've made a script for that http://www.pflaeging.net/blog/archives/938 (Sorry, it's in german, but the script ist in sh ;-))

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------


related_issues

relates,Closed,19742,RedmineInstall: MySQL: collation_database
relates,Closed,31921,Changes to properly support 4 byte characters (emoji) when database is MySQL
duplicates,Closed,10772,4-byte utf-8 characters

Admin Redmine さんが約4年前に更新

  • カテゴリDatabase_21 にセット

他の形式にエクスポート: Atom PDF

いいね!0
いいね!0