erlang mnesia创建表错误

Raj*_*R.G 2 erlang mnesia

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

mnesia:create_table(employee,
    [{attributes, record_info(fields, employee)}]).
Run Code Online (Sandbox Code Playgroud)

得到了错误

记录员工未定义

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

rvi*_*ing 5

您需要先创建记录,employee然后才能执行record_info此操作.在shell中,use可以使用rr(FileName).命令查找文件中的所有记录定义并记住它们.在模块中,您可以直接在模块中定义记录,也可以包含包含记录定义的文件.

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

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

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> 
Run Code Online (Sandbox Code Playgroud)

然后record_info工作.如果您已经在文件中有记录定义,那么请使用shell rr(File).命令,因为它更容易.我认为.