1

mnesia:create_schema()在每个应用程序启动时调用是否有副作用?

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

4

3 回答 3

1

我以前在开发中做过这个,它会在已经存在的表上吐出警告。但是,我不会在生产中重新运行它,因为它可能会产生一些我不知道的副作用,即使现在没有,也不能保证在未来的版本中不会.

为什么要多次运行它?

于 2009-12-04T03:13:44.957 回答
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 回答
0

那么它可能会在第二次调用时引发异常。抓住它。

于 2009-12-03T20:36:38.030 回答