質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.40%

  • Ruby

    8503questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • CentOS

    2889questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • VMware

    241questions

    VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

  • Redmine

    209questions

    Redmineは、プロジェクトのタスク管理、進捗管理、情報共有が可能な、 オープンソースプロジェクト管理ソフトウェアです。

redmineのチケットの説明欄の文字量によるエラー

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 1,852

ratetail

score 20

前提・実現したいこと

チケットの説明欄に入力できる文字量を増やしたい。
または、これ以上入力NGの理由を知りたい。

発生している問題・エラーメッセージ

vmwareのCentOS7.3r1611上でredmineを設定
Webブラウザ上から新規チケット追加し、説明欄にテキストを入力するが
以下エラーによって、登録できない。

入力文字量は
説明欄に「あ」の文字を全角ひらがなとして、1行あたり50文字
合計431行と8文字でエラーとなる。7文字目までは入力可能だった。
エラー時文字数計:21558文字(全角1文字カウント、改行カウントせず)

Started GET "/projects/c/issues" for xxx.xxx.xxx.xxx at 2017-04-07 17:42:47 +0900
Processing by IssuesController#index as HTML
  Parameters: {"project_id"=>"c"}
  Current user: yyyyyyy (id=5)
  Rendered queries/_filters.html.erb (6.8ms)
  Rendered queries/_columns.html.erb (2.6ms)
  Rendered issues/_list.html.erb (365.5ms)
  Rendered issues/_sidebar.html.erb (2.3ms)
  Rendered issues/index.html.erb within layouts/base (391.1ms)
Completed 200 OK in 466ms (Views: 376.1ms | ActiveRecord: 47.7ms)
Started GET "/issues/63" for xxx.xxx.xxx.xxx at 2017-04-07 17:42:50 +0900
Processing by IssuesController#show as HTML
  Parameters: {"id"=>"63"}
  Current user: yyyyyyy (id=5)
  Rendered issues/_action_menu.html.erb (2.5ms)
  Rendered issue_relations/_form.html.erb (1.2ms)
  Rendered issues/_relations.html.erb (1.8ms)
  Rendered issues/_history.html.erb (23.8ms)
  Rendered issues/_action_menu.html.erb (2.2ms)
  Rendered issues/_form_custom_fields.html.erb (0.1ms)
  Rendered issues/_attributes.html.erb (10.9ms)
  Rendered issues/_form.html.erb (18.0ms)
  Rendered attachments/_form.html.erb (1.3ms)
  Rendered issues/_edit.html.erb (26.0ms)
  Rendered issues/_sidebar.html.erb (2.4ms)
  Rendered watchers/_watchers.html.erb (2.1ms)
  Rendered issues/show.html.erb within layouts/base (95.9ms)
Completed 200 OK in 196ms (Views: 105.0ms | ActiveRecord: 21.9ms)
Started PATCH "/issues/63" for xxx.xxx.xxx.xxx at 2017-04-07 17:43:01 +0900
Processing by IssuesController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"zzzzzzzzzz", "form_update_triggered_by"=>"", "issue"=>{"is_private"=>"0", "project_id"=>"15", "tracker_id"=>"1", "subject"=>"文字数テスト", "description"=>"
■(ここに入力文字の「あ」が大量なので省略)
", "status_id"=>"1", "priority_id"=>"2", "assigned_to_id"=>"", "parent_issue_id"=>"", "start_date"=>"2017-04-07", "due_date"=>"", "estimated_hours"=>"", "done_ratio"=>"0", "notes"=>"", "private_notes"=>"0", "lock_version"=>"10"}, "was_default_status"=>"1", "time_entry"=>{"hours"=>"", "activity_id"=>"", "comments"=>""}, "last_journal_id"=>"67", "commit"=>"送信", "prev_issue_id"=>"59", "issue_position"=>"36", "issue_count"=>"36", "id"=>"63"}
  Current user: yyyyyyy (id=5)
Completed 500 Internal Server Error in 33ms (ActiveRecord: 6.8ms)

ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value: '\xE3\x81\x84' for column 'description' at row 1: UPDATE `issues` SET `issues`.`description` = '
■(ここに入力文字の「あ」が大量なので省略)
', `issues`.`updated_on` = '2017-04-07 17:43:01', `issues`.`lock_version` = 11 WHERE `issues`.`id` = 63 AND `issues`.`lock_version` = 10):
  app/models/issue.rb:210:in `create_or_update'
  app/controllers/issues_controller.rb:527:in `block in save_issue_with_child_records'
  app/controllers/issues_controller.rb:515:in `save_issue_with_child_records'
  app/controllers/issues_controller.rb:184:in `update'
  lib/redmine/sudo_mode.rb:63:in `sudo_mode'

試したこと

mariaDB使用、文字列はutf8
redmine設定時の文字コードも全てutf8で設定

+--------------------------+----------------------------+
| Variable_name            | Value                 |
+--------------------------+----------------------------+
| character_set_client     | utf8                  |
| character_set_connection | utf8              |
| character_set_database   | utf8              |
| character_set_filesystem | binary            |
| character_set_results    | utf8                |
| character_set_server     | utf8                |
| character_set_system     | utf8               |
| character_sets_dir       | /xxx/charsets/   |
+--------------------------+----------------------------+

解決方法または、理由など分かりましたら、ご回答よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

既に suama さんが回答されている issue がすべてかと思いますが、調べてしまったのでメモ代わりに追記を。

MariaDB [redmine]> SELECT TABLE_NAME,COLUMN_NAME,COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'issues' AND COLUMN_NAME = 'description';
+------------+-------------+-------------+
| TABLE_NAME | COLUMN_NAME | COLUMN_TYPE |
+------------+-------------+-------------+
| issues     | description | text        |
+------------+-------------+-------------+

該当カラムは text 型で、text 型は 2^16 ≒ 65535 バイトまでになります。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 11.7 データ型のストレージ要件

1行あたり50文字 
合計431行と8文字でエラーとなる。

UTF-8 で全角1文字あたり3バイト、改行がCR+LFで2バイトとすると、以下の通りとなり、431行+8文字でちょうど text 型の最大長 65535 バイトを超えているようですね。
(50×3+2)×431+(7*3)=65533
(50×3+2)×431+(8*3)=65536

(追記)
ちなみに、以下のように issues テーブルの description カラムのデータ型を text 型から longtext 型に変更して、65535 バイトを超える全角 21846 文字(=65538 バイト)を登録したところ、とりあえずはうまく登録されました。

MariaDB [redmine]> ALTER TABLE `issues` MODIFY `description` LONGTEXT;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

MariaDB [redmine]> SELECT TABLE_NAME,COLUMN_NAME,COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'issues' AND COLUMN_NAME = 'description';
+------------+-------------+-------------+
| TABLE_NAME | COLUMN_NAME | COLUMN_TYPE |
+------------+-------------+-------------+
| issues     | description | longtext    |
+------------+-------------+-------------+

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/08 06:19

    bezeklikさん、MariaDBでもやっぱり同様なんですね。
    日本語の場合の入力可能数を実測されていて、よくわかりました!

    キャンセル

  • 2017/04/08 10:19 編集

    suamaさん、bezeklikさん、ご回答ありがとうございます。
    おかげさまで、今後の対応の目処が付きました。
    BAは計算及び、現状のmariaDBでカラム修正テストまで確認して頂いたこちらを選ばせていただきました。
    全角1文字を2バイトとして考えていたので、65535の数字については関係ないと思ってしまってました。

    キャンセル

  • 2017/04/09 13:37

    suama さん
    確認した MariaDB は 5.5 だったのであまり違いはないようですね。ただ 10.0 からは独自な部分が増えてくるようで、現時点で Redmine 自体が MariaDB の公式サポートをうたっていないこともあり、今後対応が気になります。
    #20127 のチケットは見つけられていなかったので 3.4 で公式対応予定ということがわかり助かりました。

    キャンセル

  • 2017/04/09 13:39

    ratetail さん
    ちょうど Redmine の検証をしていたところだったので、興味深い指摘でこちらも参考になりました。
    全角はつい2バイトだと思ってしまいますよね。
    UTF-8 でも、概ね3バイトのようですが正確には2〜4バイトのようです。

    キャンセル

+3

もうすぐリリースのRedmine3.4で、こちらの件の対応が入るのではないでしょうか。MySQLについてですが、mariadbも同様かなとおもいます。

Redmineの公式サイト
The description column in the issues table is too short (MySQL)

  • 現状64KBまでしか入らない。
  •  max_size = 16.megabytes まで拡張予定

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Ruby

    8503questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • CentOS

    2889questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • VMware

    241questions

    VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

  • Redmine

    209questions

    Redmineは、プロジェクトのタスク管理、進捗管理、情報共有が可能な、 オープンソースプロジェクト管理ソフトウェアです。