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 >