在每个应用程序启动时调用mnesia:create_schema()
会产生副作用吗?
从我一直阅读的内容来看,每个数据库实例只应调用一次此函数。在现有数据库中多次调用它是一个大问题吗?
答案 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)
好吧,它可能会在第二次通话时抛出异常。抓住它。