-
更新补丁,数据库升级你执行了没有?
发表于 2009年11月24日 1 条评论在多年前韩磊曾经有首歌“走了这么久,你变了没有”,当时只是感觉好听,没什么其它的。
多年以后再听这首歌,在如此男人味的歌声中,暗香总会有些许唏嘘的感觉,让人不免感叹岁月的无情。
有些人,有些事,在多年以后才会品出不同的味道来,只是当时已惘然!
不扯了,今天暗香有些怪怪的。
最近,shopex4.8.4的补丁推出的速度比较频繁,先是主要针对分销王的9号补丁,随之又推出修复标准版若干问题的10号补丁。
不过,最近随这两个补丁的频繁推出,出现的问题也比较多。也一直有用户叫,说我们的补丁有问题,如何的不人性化…搞得暗香们很被动,难道全是俺的错?
经过一段时间的观察,暗香发现了一些问题出现的根源,暗香窃把此根源称之为补丁更新惯性问题。
自从4.8.4推出后,陆续的推出了多个补丁,从一号一直到七号补丁,这七个补丁虽然解决的问题各不相同,但更新时有这样的共性,就是下载、解压、上传后,登录后台,会直接提示升级已经完成,只是提示删除upgrade.php文件后就可以了,没有任何其它进一步的操作
然后更新多个补丁后,有用户就会发现,更新补丁后直接删除空间中的upgrade.php也是可以的,对功能上没有任何影响。
于是乎,经过七个补丁的洗礼,很多用户就有这个补丁更新的惯性思维:上传补丁后,直接删除upgrade.php后直接登录后台就可以了。
结果到了八号补丁的时候,问题就出现了,由于没有登录后台执行数据库升级就直接删除了upgrade.php文件,导致数据库升级没有进行,后台部分功能受到影响。所幸的是,当时问题不太明显,所以处理一下就OK了,但这个惯性思维却并没有引起足够重视。
考虑到这个问题,在发布九号、十号补丁时,特地在补丁中增加了补丁更新说明,希望能注意到。
九号、十号补丁发布后,这两个补丁均需要做大量的数据库升级操作,并且与后台的功能联系紧密。结果,有这个惯性思维的用户依旧上传了补丁就直接删除了upgrade.php文件,导致的最直接的问题就是商品无法添加,商品规格、类型无法浏览….后台有些不能使用了。
暗香处理了多个这样的网站后,建议大家重新上传一下十号补丁,并登录后台进行数据库的升级,然后系统会根据upgrade.php自动进行数据库的升级执行。然则,有些空间在第一次未执行升级后,再次上传此文件,却不再进行升级操作。
此时,就需要进行手工更新数据库操作了,增加一些表,修改一些字段等。
目前常见的工具就是用数据库管理工具phpmyadmin,此工具的上传、数据库信息设置不再赘述,详见暗香以前写过的一篇文章。
接下来,暗香就说一下手动升级的具体方法:
1、下载phpmyadmin版本,本方法中使用的版本为2.9.1,下载完成后,解压之,然后使用FTP工具上传到空间中商店程序所在目录,具体过程不再说明
2、如网址为www.abc.cn,则在浏览器中输入www.abc.cn/phpmyadmin,会出现如下界面

分别输入数据库的用户名、密码,点击执行后,就会进入数据库管理界面。选择shopex所在数据库

正常情况下,484最新版本会有110个表。
选择后,就会显示出商店所有的表
点击图中的SQL,进入命令行界面

3、然后用专门的编辑软件,如Editlus、DW等,打开8号补丁包中的core\updatescripts\27449.sql文件,里面的内容即数据库要升级的部分

查看里面的内容,可以看到需要创建一个表,同时,修改两个表
先创建一个表
复制其中的代码CREATE TABLE `sdb_globals` (
`glob_id` mediumint(8) unsigned NOT NULL auto_increment,
`glob_name` varchar(20) NOT NULL,
`glob_var` varchar(100) NOT NULL,
`glob_type` enum(‘system’,'custom’) NOT NULL,
`glob_remark` varchar(100) NOT NULL,
`glob_value` text NOT NULL,
`disabled` enum(‘true’,'false’) NOT NULL default ‘false’,
PRIMARY KEY (`glob_id`)
)type = MyISAM DEFAULT CHARACTER SET utf8;粘贴至刚才的SQL输入框内,然后点击执行

即可完成然后依次复制其它几个升级内容
ALTER TABLE `sdb_orders` ADD COLUMN `extend` varchar(255) default NULL;ALTER TABLE `sdb_operators` CHANGE COLUMN `lastip` `lastip` varchar(20) default NULL ;
ALTER TABLE `sdb_operators` CHANGE COLUMN `op_no` `op_no` varchar(50) default NULL ;
ALTER TABLE `sdb_operators` CHANGE COLUMN `department` `department` varchar(50) default NULL ;
分别执行结束后,数据库升级即可完成!
注意:为防止意外,在操作前请先在商店后台做好数据库备份!
到此,这两个补丁的补救工作就做完了,此时,再登录后台,所有功能均已经恢复正常!



雪可家纺 2009年11月24日 19:57