问题描述
我在节点 a
上安装了 mnesia。
我已经定义了一个架构和一个表。
现在我不知道如何添加另一个节点 b
以便 mnesia 现在可以分布式运行。
分布式我的意思是:
我尝试过的:
- 启动节点
a
并启动 mnesia -
create_schema
和节点create_table
上的a
-
dirty_insert
在节点a
然后
-
起始节点
b
-
将节点
b
连接到节点a
-
from node
a
issue :mnesia:change_config(extra_db_nodes,[nodes()]).
// 如果我从 nodea
或 nodeb
发出此命令无关紧要我收到以下错误:(a@DESKTOP-GOMS8S8)7> mnesia:change_config(extra_db_nodes,[nodes()])。 =错误报告==== 2021 年 7 月 3 日::13:33:16.147000 === 节点“a@DESKTOP-GOMS8S8”上的进程 出错,退出值: {function_clause,[{gen_server,do_abcast,[[['b@DESKTOP-GOMS8S8']], mnesia_controller,{'$gen_cast',{merging_schema,'a@DESKTOP-GOMS8S8'}}],[{file,"gen_server.erl"},{line,263}]},{mnesia_controller,connect_nodes2,3,"mnesia_controller.erl"},486}]}]}
** 异常退出:function_clause 在函数 gen_server:do_abcast/3 中 称为 gen_server:do_abcast([['b@DESKTOP-GOMS8S8']],mnesia_controller,'a@DESKTOP-GOMS8S8'}})
从 mnesia_controller:connect_nodes2/3 调用(mnesia_controller.erl,第 486 行)
我只是希望我对给定节点的 mnesia 执行的任何操作都反映在其他节点上
解决方法
nodes()
已经返回一个列表,因此不需要将返回值包装在一个列表中。试试这个:
mnesia:change_config(extra_db_nodes,nodes()).