本帖最后由 茶叶feng 于 2018-8-7 20:00 编辑
mnesia:start()启动数据库的时候,必定会创建一个名为schema的表在erlang OTP并发编程实战中有个例子,代码如下:
%% 前面调用了mnesia:start().
add_extra_nodes([Node | Tail]) ->
case mnesia:change_config(extra_db_nodes, [Node]) of
{ok, [Node]} ->
{atomic, ok} = mnesia:add_table_copy(schema, node(), ram_copies),%% 这里报错了 {atomic, ok} = mnesia:add_table_copy(key_to_pid, node(), ram_copies), Tables = mnesia:system_info(tables),
mnesia:wait_for_tables(Tables, ?WAIT_FOR_TABLES);
_ ->
add_extra_nodes(Tail)
end.
这样做的话,新加入分布式mnesia的节点本地数据库就回重复创建schema而报错,具体原因不知道是不是otp版本问题还是我代码存在问题,希望有大神指点
补充一下:
我把红色的那句注释了之后,代码就能正常运行了
|