NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
#### 模块安装文件install.php和升级文件upgrade.php的说明 关于这两个文件的几点说明: 1、模块安装脚本是指install.php,该文件是[manifest.xml](https://s.w7.cc/index.php?c=wiki&do=view&id=1&list=2645 "manifest.xml")文件内节点`<install><![CDATA[]]></install>`的分离; 2、模块升级脚本是指upgrade.php,该文件是[manifest.xml](https://s.w7.cc/index.php?c=wiki&do=view&id=1&list=2645 "manifest.xml")文件内节点`<upgrade><![CDATA[]]></upgrade>`的分离; 3、若新安装或升级版本需要执行某些脚本,则在对应文件内写相应脚本即可; 4、新安装或新版本需要执行的脚本,需在对应文件代码的基础上继续增加; 5、升级脚本中涉及到新加表,创建语句要有`IF NOT EXISTS`,否则后续添加其他脚本时会报错; 6、表前缀问题:统一写成‘ims\_’,系统内程序在执行安装或升级脚本时自动会替换成客户的表前缀; #### 举例说明: 1、模块A发布,版本1.0.0,模块功能需要表 table\_a(在install.php内添加创建语句); manifest.xml文件中关于install节点和upgrade节点可以写成如下形式: ~~~ ...... <install><![CDATA[CREATE TABLE IF NOT EXISTS `ims_table_a` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `uniacid` int(10) NOT NULL, `title` varchar(100) NOT NULL, `content` mediumtext NOT NULL, PRIMARY KEY (`id`), KEY `uniacid` (`uniacid`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8;]]></install> <upgrade><![CDATA[]]></upgrade>...... ~~~ 或 ~~~ ...... <install><![CDATA[install.php]]></install> <upgrade><![CDATA[]]></upgrade>...... ~~~ install.php文件如下: ~~~ pdo_run("CREATE TABLE IF NOT EXISTS `ims_table_a` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `uniacid` int(10) NOT NULL, `title` varchar(100) NOT NULL, `content` mediumtext NOT NULL, PRIMARY KEY (`id`), KEY `uniacid` (`uniacid`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8"); ~~~ 2、模块A发布新版本1.0.1,新添加功能需要在表table\_a添加category\_id字段及新表 table\_b,则需在install.php中加上字段category\_id和新表table\_b的创建语句,在upgrade.php中加上字段category\_id的执行sql和新表table\_b的执行sql,具体可参考如下: manifest.xml文件中关于install节点和upgrade节点可以写成如下形式: ~~~ ...... <install><![CDATA[CREATE TABLE IF NOT EXISTS `ims_table_a` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `uniacid` int(10) NOT NULL, `title` varchar(100) NOT NULL, `content` mediumtext NOT NULL, `category_id` int(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `uniacid` (`uniacid`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `ims_table_b` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `uniacid` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `title` (`title`), KEY `uniacid` (`uniacid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;]]></install> <upgrade><![CDATA[CREATE TABLE IF NOT EXISTS `ims_table_b` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `uniacid` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `title` (`title`), KEY `uniacid` (`uniacid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;]]></upgrade>...... ~~~ 或 ~~~ ...... <install><![CDATA[install.php]]></install> <upgrade><![CDATA[upgrade.php]]></upgrade>...... ~~~ install.php文件如下: ~~~ pdo_run("CREATE TABLE IF NOT EXISTS `ims_table_a` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `uniacid` int(10) NOT NULL, `title` varchar(100) NOT NULL, `content` mediumtext NOT NULL, `category_id` int(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `uniacid` (`uniacid`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8");pdo_run("CREATE TABLE IF NOT EXISTS `ims_table_b` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `uniacid` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `title` (`title`), KEY `uniacid` (`uniacid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); ~~~ upgrade.php文件如下: ~~~ pdo_run("ALTER TABLE `ims_table_a` ADD `category_id` int(10) DEFAULT NULL; ");pdo_run("CREATE TABLE IF NOT EXISTS `ims_table_b` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `uniacid` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `title` (`title`), KEY `uniacid` (`uniacid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); ~~~ 3、模块A发布新版本1.0.2,新添加功能需要在表table\_b添加displayorder字段,则需要在upgrade.php继续添加该字段的sql语句(manifest.xml文件修改方法参见第二步); install.php文件如下: ~~~ pdo_run("CREATE TABLE IF NOT EXISTS `ims_table_a` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `uniacid` int(10) NOT NULL, `title` varchar(100) NOT NULL, `content` mediumtext NOT NULL, `category_id` int(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `uniacid` (`uniacid`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8");pdo_run("CREATE TABLE IF NOT EXISTS `ims_table_b` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `uniacid` int(10) unsigned NOT NULL, `displayorder` int(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `title` (`title`), KEY `uniacid` (`uniacid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); ~~~ upgrade.php文件如下: ~~~ pdo_run("ALTER TABLE `ims_table_a` ADD `category_id` int(10) DEFAULT NULL; ");pdo_run("CREATE TABLE IF NOT EXISTS `ims_table_b` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `uniacid` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `title` (`title`), KEY `uniacid` (`uniacid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");pdo_run("ALTER TABLE `ims_table_b` ADD `displayorder` int(10) DEFAULT NULL;"); ~~~