[groonga-dev,01602] Re: mroonga適用テーブルへの「WHERE IN 多数」クエリでエラー

Back to archive index

Kouhei Sutou kou****@clear*****
2013年 8月 12日 (月) 14:46:48 JST


須藤です。

In <BAY17****@phx*****>
  "[groonga-dev,01595] mroonga適用テーブルへの「WHERE IN 多数」クエリでエラー" on Sat, 10 Aug 2013 22:59:23 +0900,
  K A <a_kira1****@hotma*****> wrote:

> 最近mroongaをいじり始めた者ですが、導入前には通っていた(※注)はずのクエリがたびたびエラーを起こすようになりました。
> 環境はCentOS 6、MySQL 5.6で、mroongaは3.06-1.el6_19.wingをラッパーモード(InnoDB)で使っています。
> ローカル環境のWindows&MariaDB 10でもテストしていますが、今のところ問題は再現していません。

うーん、MariaDBだと発生しないのですか。。。

> エラーを引き起こすクエリはたとえば以下のようなものです。
> SELECT `Product`.`code` FROM `db1`.`products` AS `Product` WHERE `Product`.`vendor_id` = 3 AND `Product`.`code` IN ('code-1', 'code-2', 〜中略〜, 'code-100');
> 表示されるメッセージは「ERROR 1030 (HY000): Got error 1 from storage engine」です。
> 
> このproductsテーブルは、複数フィールド(title, description, code, …)に対してまとめて「ft_all」という全文インデックスを付与し、コメントで「NormalizerAuto」ノーマライザーを指定してあります。
> また、それとは別にcode, vendor_idの2フィールドに対してcode_vendor_idというユニークインデックスを張ってあります。
> EXPLAINしてみると、keyは「code_vendor_id」、Extraは「Using where」となっています。 
> 
> あれこれ検索してみたところ、IN条件が長い場合にエラーになる要因は「max_allowed_packet」値だという解説を見かけたので、試みにmy.cnfで最大値の1Gに設定&MySQL再起動して再度テストしてみましたが、それでもエラーは発生しました。

手元でも再現させたいので、テーブル定義も提供してもらえません
か?

あと、もしかしたら/var/lib/mysql/groonga.logと
/var/log/mysql.logにもなにか出ているかもしれないので見せても
らえませんか?


-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)

groongaサポート:
  http://groonga.org/ja/support/
パッチ採用はじめました:
  http://www.clear-code.com/recruitment/
コミットへのコメントサービスはじめました:
  http://www.clear-code.com/services/commit-comment.html




groonga-dev メーリングリストの案内
Back to archive index