#erlang #mnesia
Вопрос:
У меня есть mnesia, установленная на узле a
. Я уже определил схему и таблицу. Теперь я не знаю, как я могу добавить еще один узел b
, чтобы mnesia теперь могла работать распределенно.
Под распределенным я подразумеваю :
- выдача a
insert
записи в мнезии с узлаa
- иметь возможность извлекать запись при запросе мнезии узла
b
Что я пробовал:
- Запустите узел
a
и запустите мнезию create_schema
иcreate_table
на узлеa
dirty_insert
в узлеa
Затем
- Начальный узел
b
- соедините узел
b
с узломa
- из
a
выпуска узла :mnesia:change_config(extra_db_nodes,[nodes()]).
// не имеет значения, если я выполняю эту команду из узлаa
или узлаb
, я получаю следующую ошибку :
(a@DESKTOP-GOMS8S8)7> mnesia:change_config(extra_db_nodes,[узлы ()]). =ОТЧЕТ ОБ ОШИБКЕ==== 3 июля-2021::13:33:16.147000 === Ошибка в процессе <0.138.0> на узле ‘a@DESKTOP-GOMS8S8’ со значением выхода: {function_clause, [{gen_server,do_abcast, [[[‘b@DESKTOP-GOMS8S8’]]], mnesia_controller, {‘$gen_cast’,{схема слияния,’a@DESKTOP-GOMS8S8′}}], [{файл,»gen_server.erl»},{строка,263}]}, {mnesia_controller,connect_nodes2,3, [{файл,»mnesia_controller.erl»},{строка,486}]}]}
** исключения выхода: function_clause в function gen_server:do_abcast/3 называют gen_server:do_abcast([[‘б@рабочего стола-GOMS8S8’]], mnesia_controller, {‘$gen_cast’, {merging_schema, а@рабочего стола-GOMS8S8′}})
на звонок от mnesia_controller:connect_nodes2/3 (mnesia_controller.Эрл, строка 486)
Я просто хочу, чтобы любая операция, которую я выполняю над мнезией данного узла, отражалась на других
Ответ №1:
nodes()
уже возвращает список, поэтому нет необходимости заключать возвращаемое значение в список. Попробуйте это:
mnesia:change_config(extra_db_nodes,nodes()).