昨天把我的一个dz论坛从X2升级到X2.5出现了问题,升级陷入死循环,具体提示如下:
update.php?step=waitingdb&nextstep=prepare&sql=5786554789722f09b8f635c20410e507&sql=ee4f20b8582052367f5beb9bd19fea58正在升级数据,请稍后。。。
[时长]:113[状态]:copy to tmp table[信息]:ALTER TABLE pre_forum_post ORDER BY pid ASC
[时长]:113[状态]:Locked[信息]:ALTER TABLE pre_forum_post CHANGE `pid` `pid` INT(10) UNSIGNED NOT NULL, CHANGE `replycredit` `replycredit` int(10) NOT NULL default '0', CHANGE `status` `status` int(10) NOT NULL default '0', ADD UNIQUE KEY pid (pid), DROP PRIMARY KEY, ADD `position` INT(8) UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY(`tid`, `position`), DROP INDEX authorid, ADD INDEX authorid (authorid,invisible)
(跳转中。。。)
去DZ官方论坛查找,发现好多人都遇到这个问题,官方也没有给予解决。由于以前经常升级DZ所以这次没在意,也没有备份数据库。现在是返回X2也返回不了了,只能想办法升级到X2.5 。于是仔细分析了一下SQL语句,发现升级post数据时便无法前进,原来原因出在这。找出原因后,果断的登录phpadmin进入论坛数据库。
数据库有两个,第一个information_schema可不是论坛的数据库,第二个才是。点击论坛数据库进入后进入表结构,把页面拉到最下面点击全选,然后在选中项选择修复表,然后是提示sql语句成功,然后再点击全选,在选中项选择优化表,提示SQL语句成功。
第一步完成了,还有一个重要的一步就是删除 install 目录中的index.php,这个官方有说明,很多新手不知道。
然后清空浏览器缓存后重新升级发现升级成功,不再陷入死循环。
写在最后忠告:dz升级时一定要备份数据库,按照官方提示一步步操作,不要急于求成。另外dz出新版本时不要急于升级,等出了正式版稳定后再考虑升级。