001-008664
本文が1MB程度を超える未読メールを開封しようとすると、エラー(DB99999)が発生し、メールを開封できない。
- 種別
- 不具合
- 機能
-
- メール
- 再現バージョン
-
- 4.0.0
- 4.0.1
- 4.0.2
- 4.0.3
- 改修バージョン
- 公開日
- 2015-05-14
- 更新日
- 2015-12-16
詳細
【発生条件】
次の条件を満たすメールを受信すると、現象が発生します。
- メールの本文が1MBを超える。
例:
--------------------------
Return-Path: user1@xxxxx.co.jp
Received: from xxxxx by xxxxx ; Mon, 01 Jan 20xx 00:00:00 +0900
Date: Mon, 01 Jan 20xx 00:00:00 +0900
Subject: Sample_Mail
From: user1
To: user2@xxxxx.co.jp
X-Mailer: xxxxxxxxxx
Message-Id: <12345678901234567890123457890@xxxxx.co.jp>
mime-version: 1.0
Content-Type: multipart/mixed; boundary="_12345678901234567890123456789012345"
Content-Transfer-Encoding: 7bit
(1MBを超える内容)
--------------------------
補足:
- 添付ファイルは、1MBを超える本文には含みません。
【再現手順】
- 「発生条件」を満たすメールを受信します。
- アプリケーション画面にログインし、[メール] > [受信箱]の順にクリックします。
- 手順1で受信したメールの標題をクリックします。
→現象発生:
次のエラーが発生し、メールを開封できません。
--------------------------
エラー(DB99999)
データベースでエラーが発生しました。 データベースのエラー番号: 1118
原因
データベースからの応答:Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
--------------------------
補足:
- 次の操作でも、同様の現象が発生します。
- 本文が1MB程度を超えるメールを送信する
- 本文が1MB程度を超えるメールを下書きとして保存する
- 本文が1MB程度を超える未読メールのチェックボックスを選択し、[既読にする]をクリックする
- 本文が1MB程度を超えるメールを送信する
- 本不具合により、メールの管理者ガイドに記載されている本文の制限文字数と、実際の制限文字数が異なります。
- 管理者ガイドに記載されている制限文字数:約42億文字(4,294,967,295文字)
- 実際の制限文字数:約10億文字(1,073,741,824文字)
補足:
- 詳細は管理者ガイドをご確認ください。
管理者ガイド
https://jp.cybozu.help/ja/g40/admin/appdx/data_input/mail.html#data_input_mail_06 - 使用する文字のバイト数によって記述できる文字数が異なります。
- 管理者ガイドに記載されている制限文字数:約42億文字(4,294,967,295文字)
- バージョン4.2.0以降のGaroonで、次の制限事項が発生します。
詳細は、次の記事をご参照ください。
本文が30MB程度を超える未読メールを開封しようとすると、エラー(DB99999)が発生し、メールを開封できない。
https://kb.cybozu.support/article/32278/
回避/対応方法
【回避方法】
次の操作で、my.iniのinnodb_log_file_sizeの値を変更します。
- Webサーバーを停止します。
- スケジューリングサービスを停止します。
例:
- Windowsの場合:
- Windowsのスタートメニューを開きます。
- [コントロールパネル] > [管理ツール] > [サービス]の順にクリックします。
- 「Cybozu_Scheduling_Service_cbgrn」を停止します。
- Windowsのスタートメニューを開きます。
- Linuxの場合:
- 次のコマンドを実行します。
# /etc/init.d/cyss_cbgrn stop
- 次のコマンドを実行します。
- Windowsの場合:
- my.iniのinnodb_log_file_sizeの値を変更します。
例:
- 変更前:
------------------------------------
innodb_log_file_size = 10M
------------------------------------ - 変更後:
------------------------------------
innodb_log_file_size = 100M
------------------------------------
- MySQLの仕様により、my.iniのinnodb_log_file_sizeの値の10分の1までしか、レコードに格納されません。
- my.iniは次のディレクトリーに配置されています。
Windowsの場合:
(インストールディレクトリ)¥mysql-5.0¥etc¥my.ini
Linuxの場合:
(インストールディレクトリ)/mysql-5.0/etc/my.ini
- 変更前:
- データベースエンジンを再起動します。
- スケジューリングサービスを起動します。
- Webサーバーを起動します。
「回避方法」を行うと、本文の制限文字数は、約42億文字(4,294,967,295文字)になります。
------------------------------------------------------------
【更新履歴】
2015/12/16 補足を追記しました。
2015/11/27 補足を追記しました。
2015/06/23 「回避方法」の一部を修正しました。
2015/06/10 補足と「回避方法」を追記しました。
2015/05/15 補足を追記しました。