mnesia如何修改表结构

当使用Mnesia数据库时,若初始定义的record结构发生变化,需要更新表结构以避免读写问题。例如,从{person, name, age}到{person, name, age, money}。在不兼容的情况下,脏读仍能获取数据,但脏写会失败。为解决此问题,可以通过定义转换函数和新属性列表,使用mnesia:transform_table进行转换。" 114103135,10294254,Java AES加密解密实现示例:结合Hex编码与解码,"['Java', '加密算法', 'AES', 'Hex']
摘要由CSDN通过智能技术生成

mnesia创建的时候需要指定表record结构,如果定义的record结构修改了,就要更新数据的表结构,否则mnesia无法正常读取和写入数据。

我们最开始是这样定义结构的

-record(person, {name, age}).

然后这样建表

mnesia:create_table(person, [{disc_only_copies, nodes()}, {attributes, record_info(fields,person)}]).


有一天我们改变了这个person结构

-record(person, {name, age, money}).

我们还可以读出mnesia的数据,但是不能匹配到现在的person结构了

> mnesia:dirty_read(person, lucy).
[{person,lucy,1}]

而且我们无法再写入数据

> mnesia:dirty_write(person, #person{name = lily, age = 2, money = 0}).
** exception exit: {aborted,{bad_type,#person{ name=lily,age=2, money

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值