Erlang-如何在没有记录的情况下使用 Mnesia
Posted
技术标签:
【中文标题】Erlang-如何在没有记录的情况下使用 Mnesia【英文标题】:Erlang- How to use Mnesia without records 【发布时间】:2015-05-24 20:29:25 【问题描述】:据我目前了解,Erlang 记录是元组:
#myRecorda="a", b="b" = myRecord, "a", "b"
考虑到这一点,以下工作:
mnesia:create_table( attributes, [name, age] )
mnesia:activity(transaction, fun() -> mnesia:write(users, user, "Charlie", "Unknow" , write)
但是我将如何检索此条目? 大多数在线 Mnesia 示例使用记录来存储和访问表行。
【问题讨论】:
我猜想使用mensia:read/2
应该可以。您在示例中看到的问题是什么?你试过什么?
我已经尝试过 mnesia:read/2,它返回一个空列表。
很奇怪,因为当我调用observer:start from shell and peak into table时,我的测试记录就在那里。
mnesia:select/2 似乎也不起作用。顺便说一句,我在 Windows 上。那会有什么不同吗?
【参考方案1】:
@Zeiss - 你是对的。 mnesia:read/2 作品。问题在于我试图使用:
:mnesia.transaction(fn -> :mnesia.read(Users, b) end)
代替:
:mnesia.transaction(fn -> :mnesia.read(Users, "b") end)
无疑是一个基本错误。 希望答案对遇到相同(或类似...)问题的其他人有所帮助。
【讨论】:
很高兴你找到了这个。 :)以上是关于Erlang-如何在没有记录的情况下使用 Mnesia的主要内容,如果未能解决你的问题,请参考以下文章
如何在不中止 erl 的情况下中止 Erlang shell (erl) 中的接收语句?