openfire 数据库

系统 1501 0

关于数据库有三个地方需要注意:

1.plugin.xml数据库及其版本的相关配置

2.系统自带表 ofVersion表中,关于插件数据库的版本记录

3.database下相关sql文件(对应表的创建或更新),并向ofVersion中插一条字段(记录插件数据库版本)。

 

首先说下个人对 OpenFire 插件数据库加载的理解:

只要会用的话,不需要看此。或者看完数据库的创建步骤知道怎么回事,再来看这里的理解也行)

1) plugin.xml 中配置数据库(及其版本),知道要需要哪个版本之后,

2) ofVersion 查询相关插件字段 version

                            a) 发现没有该插件 字段,去执行 sql (创建表) .

b) 如果有字段,看 version 的值( int 类型, 1 2 3 等)。需要版本比字段值高,更新数据库。需要版本比 version 值低,不更新。 版本号一定是 Int 类型

 

3) 在更新数据库的同时需要更新自己升级的表,还要修改 ofversion 这个表。

openfire 数据库

 

 

Sql文件

结构 插件根目录/src/database/ sql文件

Sql文件命名: 插件名_数据库.sql

openfire 数据库

 

      # $Revision$
# $Date$
INSERT INTO ofVersion (name, version) VALUES ('myplugin',0);
CREATE TABLE ofMypluginTest
 (
  id int(11) NOT NULL,
  username varchar(30) DEFAULT NULL,
  password varchar(30) DEFAULT NULL,
  PRIMARY KEY (id)
 );

    

 

一定要往 ofVersion 表中 插入你插件数据库 版本记录。有了这条记录, OpenFire 再去加载这个插件的时候,发现 ofVersion 有这个插件 记录,就不会再在去执行 sql 语句

 

plugin.xml 中加两行

关于 database 的配置。下面代码的最后两行即可。

      <version>1.0.0.1</version>
<date>24/11/2013</date>
<url>http://localhost:9090/openfire/plugins.jsp</url>
<minServerVersion>3.4.1</minServerVersion>
<licenseType>gpl</licenseType>
<databaseKey>myplugin</databaseKey>
<databaseVersion>0</databaseVersion>

    

 

启动 OpenFire ,加载插件,就显示数据库更新成功

 

数据库更新

首先更新sql文件,不修改。添加即可

方法:插件根目录/src/database/upgrade/1/插件sql或database /upgrade/2/插件sql

 

 

例如:plugins/myplugin/src/database/upgrade/1/myplugin_mysql.sql

openfire 数据库

示例 Slq 文件:

      -- $Revision$
-- $Date$
ALTER TABLE ofMypluginTest ADD COLUMN age int(2) NULL;
ALTER TABLE ofMypluginTest ADD COLUMN address VARCHAR(255) NULL;
-- Update database version
UPDATE ofVersion SET version = 1 WHERE name = 'myplugin';

    

 

注意: 更新语句,尽量先更新表,再更新 ofVersion version 字段的值。

 

万一你写的 sql 有问题,只更新了 version 值变成了新版本,表更新失败,再去加载插件时候,就不会再执行 sql. 创建表。

 

大致分析一下版本不对应的情况

(开发者尽量使版本对应)

由于情况较多,直接举例说明了

 

myplugin插件 plugin.xml要用版本 0,ofVersion表中,没有myplugin 0这条自动。执行sql,创建表,插入一条数据。(假如没有sql文件,数据库更新失败)

 

plugin.xml要用版本2,version字段为1,执行database/2/ sql文件。如果没有2这个文件夹和相应sql,显示数据库更新成功。(其实没有更新数据库)

 

 

 

openfire 数据库


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论