mnesia:create_schema()
在每个应用程序启动时调用是否有副作用?
从我继续阅读的内容来看,每个数据库实例只应调用此函数一次。在现有数据库上多次调用它是一个大问题吗?
我以前在开发中做过这个,它会在已经存在的表上吐出警告。但是,我不会在生产中重新运行它,因为它可能会产生一些我不知道的副作用,即使现在没有,也不能保证在未来的版本中不会.
为什么要多次运行它?
它没有副作用,但以后调用会导致 {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.
那么它可能会在第二次调用时引发异常。抓住它。