Erlang:不止一次调用mnesia:create_schema的副作用?

时间:2009-12-03 20:28:58

标签: erlang mnesia

在每个应用程序启动时调用mnesia:create_schema()会产生副作用吗?

从我一直阅读的内容来看,每个数据库实例只应调用一次此函数。在现有数据库中多次调用它是一个大问题吗?

3 个答案:

答案 0 :(得分:1)

我在开发之前已经完成了这项工作,它会对已经存在的表格发出警告。但是我不会在生产中重新运行它,因为它可能会有一些我不知道的副作用,即使它现在还没有保证它不会在将来的版本中

为什么要多次运行它?

答案 1 :(得分: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.

答案 2 :(得分:0)

好吧,它可能会在第二次通话时抛出异常。抓住它。