Erlang: побочные эффекты для вызова mnesia: create_schema более одного раза? - PullRequest
1 голос
/ 03 декабря 2009

Есть ли побочный эффект при вызове mnesia:create_schema() при каждом запуске приложения?

Из того, что я продолжаю читать, эта функция должна вызываться только один раз для экземпляра базы данных. Это большая проблема, чтобы вызывать его несколько раз в существующей базе данных?

Ответы [ 3 ]

1 голос
/ 04 декабря 2009

Я делал это раньше в разработке, и он выкладывает предупреждения на таблицы, которые уже существуют.Однако я не стал бы практиковать повторный запуск в Production, поскольку возможно, что у него могут быть побочные эффекты, о которых я не знаю, и даже если этого не произойдет сейчас, нет гарантии, что этого не произойдет в будущих выпусках..

Почему вы хотите запустить его несколько раз?

1 голос
/ 04 декабря 2009

У него нет побочных эффектов, но последующие вызовы приведут к {error, {Node, {уже_exists, Node}}}. Вы можете использовать что-то вроде

ensure_schema() ->
  Node = node(),
  case mnesia:create_schema([Node]) of
    ok -> ok;
    {error, {Node, {already_exists, Node}}} -> ok;
    Error -> Error
  end.
0 голосов
/ 03 декабря 2009

Ну, это может вызвать исключение при втором вызове. Просто лови это.

...