001-008916
インデックス対象データが1MBを超えると、インデックスを作成する際にエラー(DB99999)が発生する場合がある。
- 種別
- 不具合
- 機能
-
- 全般
- 再現バージョン
-
- 4.0.0
- 4.0.1
- 4.0.2
- 4.0.3
- 改修バージョン
- 公開日
- 2016-02-15
- 更新日
- 2016-02-15
詳細
【発生条件】
次の条件を満たす場合に発生します。
- my.iniのinnodb_log_file_sizeの値の10分の1を超えるインデックス対象データが存在する。
補足:
- MySQLの仕様により、my.iniのinnodb_log_file_sizeの値の10分の1までしか、レコードに格納されません。
補足:
- innodb_log_file_sizeの初期値は、10Mです。
例:
-------
innodb_log_file_size = 10M
------- - my.iniは次のディレクトリーに配置されています。
Windowsの場合:
(インストールディレクトリ)¥mysql-5.0¥etc¥my.ini
Linuxの場合:
(インストールディレクトリ)/mysql-5.0/etc/my.ini
- innodb_log_file_sizeの初期値は、10Mです。
- MySQLの仕様により、my.iniのinnodb_log_file_sizeの値の10分の1までしか、レコードに格納されません。
【準備】
- 全文検索サーバーを準備します。
- 「発生条件」を満たすメールを受信します。
補足:
- 添付ファイルは、「発生条件」のデータには含みません。
- 添付ファイルは、「発生条件」のデータには含みません。
【再現手順】
- コマンドラインを開きます。
- CGI実行ディレクトリーに移動します。
例:
Windowsの場合:
cd C:¥Inetpub¥scripts¥cbgrn
Linuxの場合:
cd /var/www/cgi-bin/cbgrn - 次のコマンドを実行し、インデックスの作成を開始します。
例:
Windowsの場合:
.¥grn.exe -C -q code¥command¥fts¥full_index.csp
Linuxの場合:
./grn.cgi -C -q code/command/fts/full_index.csp (パラメーター) - インデックスの作成で表示されたログを確認します。
→現象発生:
次のエラーが発生します。
-------
truncated: tab_grn_mail_message___p1, 10.mail truncated: tab_grn_mail_message___p1, 11.11 mails indexedError: DB99999
データベースでエラーが発生しました。
データベースのエラー番号: 1118
Cause:
データベースからの応答: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.
-------
補足:
- すべてのアプリケーションで、同様の現象が発生する可能性があります。
回避/対応方法
【回避方法】
次の操作で、my.iniのinnodeb_log_file_sizeの値を変更します。
- Webサーバーを停止します。
- スケジューリングサービスを停止します。
例:
Windowsの場合:
- Windowsのスタートメニューを開きます。
- [コントロールパネル] > [管理ツール] > [サービス]の順にクリックします。
- 「Cybozu_Scheduling_Service_cbgrn」を停止します。
Linuxの場合:
- 次のコマンドを実行します。
# /etc/init.d/cyss_cbgrn stop
- Windowsのスタートメニューを開きます。
- my.iniのinnodb_log_file_sizeの値を変更します。
例:
- 変更前:
-------
innodb_log_file_size = 10M
------- - 変更後:
-------
innodb_log_file_size = 100M
-------
- 変更前:
- データベースエンジンを再起動します。
- スケジューリングサービスを起動します。
- Webサーバーを起動します。