在本地mnesia表中保存数据

问题描述 投票:1回答:1

我正在使用mnesia来存储chicago_boss应用程序中的数据。我创建表并存储数据如下:

mnesia:create_table(connection, [{record_name, connection},
    {storage_properties, [{ets, [compressed]}, {dets, [{auto_save, 5000}]} ]}]).

mnesia:dirty_write(#connection{pid=WebSocketId, name=EventType}).

我的mnesia信息如下:

(sample_app@blanes-mbp-2)6> mnesia:info().
---> Processes holding locks <--- 
---> Processes waiting for locks <--- 
---> Participant transactions <--- 
---> Coordinator transactions <---
---> Uncertain transactions <--- 
---> Active tables <--- 
connection     : with 0        records occupying 305      words of mem
schema         : with 2        records occupying 554      words of mem
===> System info in version "4.11", debug level = none <===
opt_disc. Directory "/Users/blane/erlang/sample_app/Mnesia.sample_app@blanes-mbp-2" is NOT used.
use fallback at restart = false
running db nodes   = ['sample_app@blanes-mbp-2']
stopped db nodes   = [] 
master node tables = []
remote             = []
ram_copies         = [connection,schema]
disc_copies        = []
disc_only_copies   = []
[{'sample_app@blanes-mbp-2',ram_copies}] = [schema,connection]
4 transactions committed, 0 aborted, 0 restarted, 0 logged to disc
0 held locks, 0 in queue; 0 local transactions, 0 remote
0 transactions waits for other nodes: []
ok

我的问题是每次我停止我的老板服务器时,表格中的数据都会消失。我如何在本地保存这些数据,以便在我启动/停止服务器时仍然存在?

erlang mnesia
1个回答
2
投票

{disc_copies,Nodelist},其中Nodelist是该表应该具有光盘副本的节点的列表。如果表副本的类型为disc_copies,则表的此特定副本上的所有写操作都将写入磁盘以及表的RAM副本。

可以在一个节点上具有disc_copies类型的复制表,在另一个节点上具有另一种类型。默认值为[]。

您可以在创建表时添加此{disc_copies, [node()]}

© www.soinside.com 2019 - 2024. All rights reserved.