`
cwqcwk1
  • 浏览: 86933 次
文章分类
社区版块
存档分类
最新评论

mnesia如何修改表结构

 
阅读更多

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=0}}}
in function mnesia:abort/1 (mnesia.erl, line 309)

但是我们还想要使用这个数据库,可以这样修改数据库

Fun = fun(X) ->
case X of
{person, Name, Age} ->
{person, Name, Age, 0};
_ ->
X
end
end,
NewAttr = [name, age, money],
mnesia:transform_table(person, Fun, NewAttr, person).


参考:

http://blog.csdn.net/mycwq/article/details/30101659

分享到:
评论

相关推荐

    Mnesia User's Guide

    session, specify a Mnesia database directory, initialize a database schema, start Mnesia, and create tables. Initial prototyping of record definitions is also discussed. • Build a Mnesia Database ...

    amnesia:失忆备忘录

    B站视频地址: 做了文字校验,已经成功上线,有兴趣的小伙伴可以扫码体验:可以微信搜索:失忆备忘录一、失忆的由来之所以开发这款软件,是因为在那段时间事情很多,但是经常忘记。虽然市面上类似的功能很多,我之前...

    amnesia-开源

    在AMNESIA中,数据库操作被抽象化,使得程序员可以使用Erlang的本机数据类型和语言结构来处理数据库操作,而不是传统的SQL语句。这种方式使得代码更加简洁,同时也保持了Erlang的编程风格和并发特性。例如,通过A...

    Api-Social-Amnesia.zip

    Api-Social-Amnesia.zip,忘记过去。社交健忘症确保你的社交媒体帐户只显示你最近的历史,而不是5年前“那个阶段”的帖子。,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的...

    Chrome Amnesia-crx插件

    语言:English (United States) 遗忘的延伸 Chrome失忆症是一个Chrome扩展程序,可让您有选择地不记得自己的任何浏览历史记录。...有关更多信息,请访问https://github.com/DanielBok/chrome-amnesia。

    Amnesia-开源

    失忆症是一种提醒,允许您定义警报,贴纸(贴子)以提醒您一些重要的内容以及有关所需内容的注释。 可以将警报编程为在给定时间显示,可以在桌面上放置贴纸以随时查看。

    Mnesia用户手册.zip

    3. 表模式:Mnesia支持多种表类型,如简单记录(flat files)、行链接表(linked-in disk tables)和内存表(RAM tables)。这些不同的表类型可以根据性能和持久性需求进行选择。 4. 查询语言:Mnesia提供了一个...

    amnesia_cck:“ amensia”项目的源代码,已针对CCK展示进行了修改-Show source code

    文件名"amnesia_cck-master"表明这是项目的主要分支,可能包含项目的基础结构和核心修改。"master"分支通常代表项目的主要开发线,包含了最新的稳定代码。这意味着用户可以下载此分支,了解项目的基本结构,并在此...

    mnesia数据库文档

    5. **模式定义**:Mnesia允许用户定义数据库模式,包括表、索引和属性等,提供了一种结构化的方式来组织和访问数据。 6. **查询语言**:Mnesia提供了自己的查询语言,允许用户执行复杂的查询和数据操作,同时也有对...

    Mnesia用户手册(docx版)

    - **创建新表**:创建新表时,需要指定表的名称、表的类型(例如,是正交表还是ADT)、键的类型以及记录的结构。表的大小和内存分配也在此时进行配置。 4. **事务和其他上下文存取** - **事务属性**:Mnesia 提供...

    erlang——Mnesia用户手册.pdf

    8.附录.A:Mnesia.错误信息 8.1.Mnesia.中的错误 9.附录.B:备份回调函数接口 9.1.Mnesia.备份回调行为 10.附录.C:作业存取回调接口 10.1.Mnnesia.存取回调行为 11.附录.D:分片表哈希回调接口 11.1....

    Mnesia table fragmentation 过程及算法分析

    随着业务需求的增长,单个 Mnesia 表的大小和性能可能会成为瓶颈。为了解决这个问题,Mnesia 提供了表分片(table fragmentation)的功能。通过使用 Linear Hashing 算法,Mnesia 可以将大表分散存储在多个节点上,...

    Mnesia 用户手册中文版 pdf

    1. 动态重配置的数据库模式:Mnesia允许在运行时修改数据库模式,这对于需要持续运行和能够适应变化的系统来说是非常重要的。 2. 表的多属性声明:Mnesia的表可以被声明为具有位置、复制和持久等属性。这些属性允许...

    Amnesia

    "Amnesia"是一个可能与计算机安全或数据丢失相关的主题,暗示了系统或用户可能遭遇了某种形式的记忆丧失,即数据无法访问或丢失的情况。在IT领域,这种情况通常涉及到磁盘故障、病毒攻击、误操作或者软件错误。"Post...

    erlang mnesia 数据库基本查询

     示例中表结构的定义:  %% 账号表结构  -record( y_account,{ id, account, password }).  %% 资料表结构  -record( y_info, { id, nickname, birthday, sex }).  1、Select 查询  查询全部...

Global site tag (gtag.js) - Google Analytics