Bitnami Redmine バージョンアップ後、ファイルを添付すると「500 Internal Server Error」になる。

Bitnami Redmineを3.4にバージョンアップした後、ファイルを添付すると、「500 Internal Server Error」が発生する。 production.logを確認したところ、下記のエラーが発生していた。

ActiveRecord::StatementInvalid (Mysql2::Error: Data too long for column 'digest' at row 1: INSERT INTO `attachments` (`filesize`, `author_id`, `filename`, `content_type`, `created_on`, `disk_directory`, `disk_filename`, `digest`) VALUES (3219456, 51, 'xxxxxxxxxxxxxxxxxxxxx.xls', 'application/vnd.ms-excel', '2019-01-22 13:32:06', '2019/01', '190122133206_888b6d3922b1328bb95a9axxxxxxxxx.xls', '7f983175713489027c14d233d23098f3daf8162a91a1a0e169f0e64xxxxxxxxxx')):
  app/controllers/attachments_controller.rb:97:in `upload'
  lib/redmine/sudo_mode.rb:63:in `sudo_mode'

ファイルのアップロードはエラーになっておらず、DBへの書き込み(INSERT)でエラーになっていた。MySQLのテーブルの定義を調べると、「digest」の型が「varchar(30)」で、実際に書き込みを行っているのは、64文字であることが判明。もともと、ファイルのハッシュ値(チェックサム)をMD5でやっていたものが、バージョンアップのタイミングで、SHA256になり、テーブルの定義がアップデートされていなかったのが、原因だった。

「digest」カラムをSHA256のハッシュ値を保存できるようにするため、テーブル定義を下記のAlter文で更新した。

alter table attachment modify digest varchar(64);

更新後は、無事にRedmineにファイル添付できるようになった。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする