erlang mnesia创建表错误

时间:2014-04-22 08:28:02

标签: erlang mnesia

我正在尝试从Erlang shell创建mnesia表。我从mnesia帮助文档复制了以下语法时出现错误和相同的错误。

mnesia:create_table(employee,
    [{attributes, record_info(fields, employee)}]).

得到了错误

  

记录员工未定义

尝试了各种组合,得到同样的错误。 mnesia已经开始了。

2 个答案:

答案 0 :(得分:5)

您需要先定义记录employee,然后再对其进行record_info。在shell中,可以使用rr(FileName).命令查找文件中的所有记录定义并记住它们。在模块中,您可以直接在模块中定义记录,也可以包含包含记录定义的文件。

必须在shell中执行此特殊处理的原因是记录纯粹是编译时功能,因此记录定义在任何地方都不会“存在”。

修改 如果要直接在shell中定义记录,则不能使用标准-record(...).语法。这仅在模块中有效。 shell将其视为对record/2函数的调用。您需要使用rd shell命令。你的情况会变成:

3> rd(employee, {emp_no, name, salary, sex, phone, room_no}).
employee
4> record_info(fields, employee).
[emp_no,name,salary,sex,phone,romm_no]
5> 

然后record_info有效。如果您已在文件中包含记录定义,则使用shell rr(File).命令,因为它更容易。我想。

答案 1 :(得分:2)

你可以试试 在erlang shell中rd(employee, {emp_no, name, salary, sex, phone, room_no}).

  

rd(RecordName,RecordDefinition)定义shell中的记录。   RecordName是一个原子,RecordDefinition列出了字段名称和   默认值。通常记录定义是已知的   shell使用下面描述的rr命令,但有时它是   方便快速定义记录。

请参阅此链接:http://www.erlang.org/doc/man/shell.html