给人玫瑰–手留余香!shopex网店运营经验分享,问题与技巧,资讯与观点,网店推广
RSS 图标 Email 图标 首页图标
  • 更新补丁,数据库升级你执行了没有?

    发表于 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,会出现如下界面

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

    选择shopex所在数据库
    02
    正常情况下,484最新版本会有110个表。
    选择后,就会显示出商店所有的表

    03
    点击图中的SQL,进入命令行界面
    04

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

    查看里面的内容,可以看到需要创建一个表,同时,修改两个表
    先创建一个表
    复制其中的代码

    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输入框内,然后点击执行

    06
    即可完成

    然后依次复制其它几个升级内容
    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 ;

    分别执行结束后,数据库升级即可完成!

    注意:为防止意外,在操作前请先在商店后台做好数据库备份!

    到此,这两个补丁的补救工作就做完了,此时,再登录后台,所有功能均已经恢复正常!

     

    1 responses to “更新补丁,数据库升级你执行了没有?” RSS 图标


ICP:05002918