在每個應用程序啓動時調用mnesia:create_schema()
是否有副作用?Erlang:副作用多次調用mnesia:create_schema?
從我一直在閱讀的內容來看,這個函數只能在每個數據庫實例中調用一次。在現有數據庫上多次調用它是一個大問題?
在每個應用程序啓動時調用mnesia:create_schema()
是否有副作用?Erlang:副作用多次調用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.
抱歉,傢伙......我只能接受一個答案! – jldupont 2009-12-04 11:17:49