最近discuz官方发布了新的版本X3.1,为了跟上最新版本,就要升级,网站做了二次开发,所以升级,就要知道更改了哪些东西。
今天看了一下升级文件update.php,得到
$devmode = file_exists(DISCUZ_ROOT.'./install/data/install_dev.sql');
$sqlfile = DISCUZ_ROOT.($devmode ? './install/data/install_dev.sql' : './install/data/install.sql'); 还不知道install_dev.sql里面是什么!!
1. ./install/data/install.sql 数据库结构文件 ,升级时是不删除表重建表的
2. ./install/data/update.sql 升级文件
我们最关心的是已有的数据,升级数据库结构时 程序从最新的install.sql文件中获取所有的表,及其结构,循环遍历
如果表不存在,则新建表
表存在 对比索引变更,字段变更来更新表结构
Step: start
升级界面第一步
所做操作: 确定站点关闭
Step: prepare
升级第二步
所做操作: 对现有的数据库进行操作,
更新表字段,
表主键变更(删除旧的主键,建立新的主键)
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
DB::query("ALTER TABLE ".DB::table('common_failedlogin')." DROP PRIMARY KEY");
DB::query("ALTER TABLE ".DB::table('common_failedlogin')." ADD PRIMARY KEY ipusername (ip,username)");
根据需求清除记录数据 如common_failedlogin表
条件判断删除冗余数据: common_tagitem
Step: sql
升级第三步
所做操作: 数据结构升级
表不存在,创建表
对比新旧表的字段,更新索引,字段,添加新的字段
Step: data
升级第四步
所做操作: 更新部分表的数据 (实名功能, 配置项setting,用户栏目, 管理组设置【权限,字段变更】, 导航...),
关闭所有手动安装的插件(modules 不含有system)
Step: delete
升级第五步
所做操作:如果./install/data/install_dev.sql文件存在则执行删除操作,不存在提示一下进入下一步
如果有...删除多余的数据表和字段
Step: style
升级第六步
请确认是否要恢复默认风格
Step: cache
升级第七步
缓存更新