记录在mnesia

时间:2012-12-30 20:59:19

标签: erlang mnesia

我在Erlang mnesia数据库中有以下小表。当我使用dirty_select函数时,如下所示:

mnesia:dirty_select(user, [{#user{id = '$1', name = martin}, [], ['$1']}]).

我收到错误:

* 1: record user undefined

用户表有一行,用户ID为主键,'martin'为用户名。 当我使用以下命令时,它运行良好:

mnesia:dirty_read(user, 1).

输出是:

[{user,1,martin}]

上述错误可能是什么原因?

1 个答案:

答案 0 :(得分:4)

如果在使用erlang shell时遇到此错误,则需要定义记录。记录是编译时构造,shell无权访问它们的定义。

1> rd(user, {id, name}).
user
2> #user{id=1, name="foo"}.
#user{id = 1,name = "foo"}
3> mnesia:dirty_select(user, [{#user{id = '$1', name = martin}, [], ['$1']}]).
...

一旦定义了记录,您的dirty_read操作将使用记录语法打印结果。