001-008664

パッケージ版 Garoon

関心あり
1人の方が関心を示しています

本文が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. 「発生条件」を満たすメールを受信します。

  2. アプリケーション画面にログインし、[メール] > [受信箱]の順にクリックします。

  3. 手順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程度を超える未読メールのチェックボックスを選択し、[既読にする]をクリックする

  • 本不具合により、メールの管理者ガイドに記載されている本文の制限文字数と、実際の制限文字数が異なります。

    • 管理者ガイドに記載されている制限文字数:約42億文字(4,294,967,295文字)

    • 実際の制限文字数:約10億文字(1,073,741,824文字)

    補足:
  • バージョン4.2.0以降のGaroonで、次の制限事項が発生します。
    詳細は、次の記事をご参照ください。

    本文が30MB程度を超える未読メールを開封しようとすると、エラー(DB99999)が発生し、メールを開封できない。
    https://kb.cybozu.support/article/32278/

回避/対応方法

【回避方法】

 

次の操作で、my.iniのinnodb_log_file_sizeの値を変更します。

  1. Webサーバーを停止します。

  2. スケジューリングサービスを停止します。

    例:
    • Windowsの場合:

      1. Windowsのスタートメニューを開きます。

      2. [コントロールパネル] > [管理ツール] > [サービス]の順にクリックします。

      3. 「Cybozu_Scheduling_Service_cbgrn」を停止します。

    • Linuxの場合:

      1. 次のコマンドを実行します。

        # /etc/init.d/cyss_cbgrn stop

  3. 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

  4. データベースエンジンを再起動します。

  5. スケジューリングサービスを起動します。

  6. Webサーバーを起動します。

 

「回避方法」を行うと、本文の制限文字数は、約42億文字(4,294,967,295文字)になります。

 

 

------------------------------------------------------------
【更新履歴】

2015/12/16 補足を追記しました。

2015/11/27 補足を追記しました。

2015/06/23 「回避方法」の一部を修正しました。

2015/06/10 補足と「回避方法」を追記しました。
2015/05/15 補足を追記しました。