[groonga-dev,00465] Re: Ruby 1.9.2 & Rails 3.0.5 & rroonga 1.1.0 環境にてgroongaのデータのロード失敗

Back to archive index

tatsuya sasaki tatsu****@gmail*****
2011年 3月 29日 (火) 11:03:44 JST


遠藤様、須藤様

ササキです。

ありがとうございます!
本日中に試して結果を報告させていただきます。

> groonga(やrroongaのGroonga::Schema)ではテーブルやカラムのファ
> イル名はユーザが明示しない場合は自動で生成します。その自動生
> 成するファイル名はデータベース作成時に指定したファイル名を元
> に生成しています。

>須藤様
データベース作成時にテーブルやカラムのファイル名を明示的に指定する方法を
ご教授頂けますでしょうか?
もしドキュメントがあれば該当のURLを教えて頂けますと幸いです。

以上、何卒宜しくお願いいたします。

ササキ

2011/3/29 Kouhei Sutou <kou****@clear*****>:
> 須藤です。
>
> In <AANLkTi=WjBdB****@mail*****>
>  "[groonga-dev,00460] Re: Ruby 1.9.2 & Rails 3.0.5 & rroonga 1.1.0 環境にてgroongaのデータのロード失敗" on Tue, 29 Mar 2011 03:37:45 +0900,
>  tatsuya sasaki <tatsu****@gmail*****> wrote:
>
>> 物は試しでRails console 上でdbを作成してみました。
>> Groonga::Database.create(:path => '/tmp/tmp1/foo.db')
>> # データインポート処理...
>> 一旦 Rails console を抜け、再度 Rails console を立ち上げてロード
>> Groonga::Database.open('/tmp/tmp1/foo.db')
>> すると、検索は正常に動作しました。
>>
>> Rails console を抜けて DB のファイルを他のディレクトリに移動。
>> mv /tmp/tmp1 /tmp/tmp2
>> Rails console を立ち上げて Groonga でデータをロード.
>> Groonga::Database.open('/tmp/tmp2/foo.db')
>> すると、検索はできませんでした。
>> (最初のメールのようにGroonga['foo'] が nil を返す.
>> dbのファイルフォーマットがおかしい等のエラーは発生していません。 )
>>
>> 再度 mv /tmp/tmp2 /tmp/tmp1でDBのファイルのディレクトリを
>> 元のディレクトリに戻してから、 Rails console で処理を行うと
>> 正常に検索等が行えました。
>>
>> 尚、 irb で試した場合も /tmp/tmp1/foo.db の場合は検索成功、
>> /tmp/tmp2/foo.db の場合は検索できませんでした(Groonga['foo'] が nil を返す)
>>
>> groonga の db ファイル作成時に何らかの理由でディレクトリパスが
>> dbファイルに含まれており、同じパスでロードしないとダメなのでしょうか?
>> # さすがにそれはないと思うのですが・・・。
>
> 遠藤さんのメールにもありますが、データベースファイルを移動し
> ているのが原因です。実はデータベース内にパスが含まれているん
> です。
>
> が、移動しても大丈夫な方が便利ですよねぇ。
> 互換性のことも考えながらですが、常にそうできるならそのように
> したいと思います。
>
>
> 以下、参考までにこのあたりの動作についてです。
>
> groongaではテーブルやカラムがそれぞれファイルに結び付けられて
> いて、データベースがテーブルやカラムの関係などを管理していま
> す。データベースもファイルに結び付けられています。データベー
> スファイルの中にはopenしたときにテーブルやカラムの関係を再構
> 築できるように、テーブルやカラムのファイル名も記録されていま
> す。今回はここが問題になっています。
>
> groonga(やrroongaのGroonga::Schema)ではテーブルやカラムのファ
> イル名はユーザが明示しない場合は自動で生成します。その自動生
> 成するファイル名はデータベース作成時に指定したファイル名を元
> に生成しています。
>
> そのため、データベース作成時に絶対パスでパスを指定した場合は、
> テーブルやカラムのファイルも絶対パスで記録され、mvすると動か
> なくなります。一方、データベース作成時に相対パスでパスを指定
> した場合は、テーブルやカラムのファイルも相対パスで記録され、
> mvしても動作します。
>
> --
> 須藤 功平 <kou****@clear*****>
> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)
>
> プログラミングが好きなソフトウェア開発者を募集中:
>  http://www.clear-code.com/recruitment/
>
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
>




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