2009年10月20日

Mnesiaでテーブル構造を変えたときは

Erlangの標準データベース管理システム「Mnesia」は-recordからテーブル構造をつくれたり、保存できるデータもErlangのデータ構造と親和性が高かったりと、非常に便利です。

が、「プログラミングErlang」のMnesiaの説明はちょっとだけ不親切というか、サンプルコードを変更して自分用にいろいろしていくときに肝心な説明が抜けてる。

テーブル構造を変えたときにどう作り直すかが書かれてない。まあ、仕方ないのかもしれないけど、とりあえ初学者はハマると思う。少なくとも自分ははまりました。

対処としてシンプルなのは、ノードが保存している古い情報をクリアしてテーブル構造の構築からやりなおさせるという手順。

mnesia:stop(), mnesia:delete_schema([node()]).

です。

これであらためてdo_this_once()←サンプルにあるデーブル初期化コードから実行すれば、あたらしいテーブル構造が使えるようになります。

たぶんdelete_schemaではなくテーブル単位での消去もあると思うけど、とりあえず自分のメモもかねてこれを記録しておきます、はい。
posted by へろ at 00:33| Comment(46) | TrackBack(0) | Erlang