Erlang: effetti collaterali (s) a chiamare mnesia: CREATE_SCHEMA più di una volta?

StackOverflow https://stackoverflow.com/questions/1842687

  •  12-09-2019
  •  | 
  •  

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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top