【问题标题】:Erlang- How to use Mnesia without recordsErlang-如何在没有记录的情况下使用 Mnesia
【发布时间】:2015-05-24 20:29:25
【问题描述】:

据我目前了解,Erlang 记录是元组:

#myRecord{a="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 上。那会有什么不同吗?

标签: database functional-programming erlang erlang-otp mnesia


【解决方案1】:

@Zeiss - 你是对的。 mnesia:read/2 作品。问题在于我试图使用:

:mnesia.transaction(fn -> :mnesia.read(Users, b) end)

代替:

:mnesia.transaction(fn -> :mnesia.read(Users, "b") end)

无疑是一个基本错误。 希望答案对遇到相同(或类似...)问题的其他人有所帮助。

【讨论】:

  • 很高兴你找到了这个。 :)
猜你喜欢
  • 1970-01-01
  • 2016-06-21
  • 2018-09-18
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多