關于數據庫有三個地方需要注意:
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 這個表。
?
?
Sql文件
結構 插件根目錄/src/database/ sql文件
Sql文件命名: 插件名_數據庫.sql
?
# $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
示例 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,顯示數據庫更新成功。(其實沒有更新數據庫)
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
