ecshop地区数据表region中部分地区重复的bug

ecshop地区数据表region中部分地区重复的bug

1、发现bug

偶然的情况下,发现ecshop在选择地址时,四川id:26->成都id:322—> 都江堰市到新津县(id:2733-2752)这部分区县出现重复的情况。如下图:

ecshop 地区重复<img alt="ecshop 地区重复 " src="https://s.yunzhuji.shop/uploads/image/160305/16hw1t0py0.JPG_.jpg?media_id=321" title="ecshop 地区重复 " width="600" >


在数据库中找到这部分如图

ecshop 地区重复 数据库<img alt="ecshop 地区重复 数据库" src="https://s.yunzhuji.shop/uploads/image/160305/16hw1tvj3y.JPG_.jpg?media_id=322" title="ecshop 地区重复 数据库" width="600" >


有可能是在使用过程出现的问题,进一步找到ecshop原始的安装源码,发现sql数据的这一段,也是重复的 。
ecshop 地区重复 源代码中<img alt="ecshop 地区重复 源代码中" src="https://s.yunzhuji.shop/uploads/image/160305/16hy1qaeo3.JPG_.jpg?media_id=323" title="ecshop 地区重复 源代码中" width="600" >


2、更多重复信息

现在只发现四川省id:26成都id:322下的区县有重复,还有可能地区也有重复,写了个sql语句查询下:

// 前缀不是默认的 ecs_ 请自行修改
SELECT r1.*  FROM `ecs_region` as r1 left join `ecs_region`  as r2 ON r1.region_name = r2.region_name WHERE  r1.region_name = r2.region_name AND r1.region_id<>r2.region_id AND r1.parent_id = r2.parent_id ;

结果:

region_idparent_idregion_nameregion_typeagency_id
62364安定区30
62464安定区30
2733322都江堰市30
2734322彭州市30
2735322邛崃市30
2736322崇州市30
2737322金堂县30
2738322双流县30
2739322郫县30
2740322大邑县30
2741322蒲江县30
2742322新津县30
2743322都江堰市30
2744322彭州市30
2745322邛崃市30
2746322崇州市30
2747322金堂县30
2748322双流县30
2749322郫县30
2750322大邑县30
2751322蒲江县30
2752322新津县30

查询结果显示除了四川省id:26成都id:322下的区县重复,还有一个是 甘肃id:5定西id:64下的 安定区id:623-624

3、bug修复

删除重复的行

// 前缀不是默认的 ecs_ 请自行修改
    DELETE FROM `ecs_region` WHERE `region_id` = 624 OR (`region_id` > 2742 AND  `region_id`<2753) LIMIT 11;

修改 ecs_order_info 和ecs_user_address 中的地区信息

// 前缀不是默认的 ecs_ 请自行修改
UPDATE `ecs_order_info` SET district = district - 10 WHERE district > 2742 AND district < 2753;

UPDATE `ecs_user_address` SET district = district - 10 WHERE district > 2742 AND district < 2753;

UPDATE `ecs_order_info` SET district = 623 WHERE district =624;

UPDATE `ecs_user_address` SET district = 623 WHERE district=624;

注意: 执行SQL语句前,请注意备份

猜你喜欢

微信QQ空间QQ好友新浪微博联系客服