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

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

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

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

Ruby

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

Redmine

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

VMware

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

Q&A

解決済

2回答

10141閲覧

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

ratetail

総合スコア32

CentOS

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

Ruby

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

Redmine

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

VMware

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

1グッド

1クリップ

投稿2017/04/07 09:27

###前提・実現したいこと
チケットの説明欄に入力できる文字量を増やしたい。
または、これ以上入力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/ |
+--------------------------+----------------------------+

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

bezeklik👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

sql

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

該当カラムは 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+(73)=65533
(50×3+2)×431+(8
3)=65536

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

sql

1MariaDB [redmine]> ALTER TABLE `issues` MODIFY `description` LONGTEXT; 2Query OK, 1 row affected (0.01 sec) 3Records: 1 Duplicates: 0 Warnings: 0 4 5MariaDB [redmine]> SELECT TABLE_NAME,COLUMN_NAME,COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'issues' AND COLUMN_NAME = 'description'; 6+------------+-------------+-------------+ 7| TABLE_NAME | COLUMN_NAME | COLUMN_TYPE | 8+------------+-------------+-------------+ 9| issues | description | longtext | 10+------------+-------------+-------------+

投稿2017/04/07 12:45

編集2017/04/07 12:51
bezeklik

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

suama

2017/04/07 21:19

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

2017/04/08 01:21 編集

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

2017/04/09 04:37

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

2017/04/09 04:39

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

0

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

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

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

投稿2017/04/07 11:37

編集2017/04/07 11:37
suama

総合スコア1997

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問