1

mnesia:create_schema()各アプリケーションの起動時に呼び出すことの副作用はありますか?

私が読み続けていることから、この関数はデータベース インスタンスごとに 1 回だけ呼び出す必要があります。既存のデータベースで複数回呼び出すことは大きな問題ですか?

4

3 に答える 3

1

副作用はありませんが、後で呼び出すと {error, {Node,{already_exists,Node}}} になります。次のようなものを使用できます

ensure_schema() ->
  Node = node(),
  case mnesia:create_schema([Node]) of
    ok -> ok;
    {error, {Node, {already_exists, Node}}} -> ok;
    Error -> Error
  end.
于 2009-12-04T07:26:28.520 に答える
1

以前に開発中にこれを行ったことがありますが、既に存在するテーブルに警告を吐き出します。ただし、私が気付いていない副作用が発生する可能性があるため、本番環境で再実行することはしません。また、現在発生していなくても、将来のリリースで発生しないという保証はありません。 .

なぜ何度も実行したいのですか?

于 2009-12-04T03:13:44.957 に答える
0

2 回目の呼び出しで例外がスローされる可能性があります。キャッチするだけです。

于 2009-12-03T20:36:38.030 に答える