Erlang: effetti collaterali (s) a chiamare mnesia: CREATE_SCHEMA più di una volta?
Domanda
C'è un effetto collaterale di mnesia:create_schema()
invitando ogni applicazione cominciare?
Da quello che continuo a leggere, questa funzione dovrebbe essere chiamata solo una volta per ogni istanza di database. E 'un grande problema di chiamare più di una volta su un database esistente?
Soluzione
ho fatto prima in fase di sviluppo e sputa fuori gli avvertimenti sui tavoli già esistenti. Tuttavia non vorrei fare l'abitudine di eseguire nuovamente in produzione in quanto è possibile che essa può avere alcuni effetti collaterali Sono a conoscenza di e, anche se non ora non v'è alcuna garanzia non che sarà nelle prossime versioni .
Perché vuoi eseguirlo più volte?
Altri suggerimenti
Non ha alcun effetto collaterale, ma le chiamate successive si tradurrà in {{errore, Nodo, {already_exists, Nodo}}}. È possibile usare qualcosa come
ensure_schema() ->
Node = node(),
case mnesia:create_schema([Node]) of
ok -> ok;
{error, {Node, {already_exists, Node}}} -> ok;
Error -> Error
end.
Beh, potrebbe generare un'eccezione in seconda convocazione. Basta prenderlo.