现象:
表中含有自增ID字段时,脚本同一时间多次调用,导致写入重复数据
原因:
首先,表的结构为自增ID表结构,只要传入写入的数据,数据就会被写入,所以在写入数据前是进行truncate操作,将数据进行删除,再进行写入。其次,由于脚本同一时间触发多次,执行速度相同,在写入数据时,就会同时写入相同的数据,导致数据重复。
举例:四川天府银行资产管理银行理财数据重复::当天调度同一时间触发多次,且表结构为自增ID结构,导致数据 重复写入。所以在脚本下次未执行之前,数据都是重复(错误)的。
解决:
1)对相关数据表建立唯一索引 ,由于唯一索引是自己设置的,防止遗漏数据,所以加了2措施。
2) 针对唯一索引增加保护措施 :在写入数据后,将写入的数据长度与计算结果数据长度进行长度比对,如若长度不对,脚本会直接报错,提醒维护人员修改其唯一索引的设置。
添加、删除唯一索引语法为:
添加唯一索引:
ALTER TABLE product_price_all_market_gather
ADD unique(cp_id,product_object); 其中product_price_all_market_gather
为表名,cp_id、product_object为字段名
删除唯一索引::
ALTER TABLE product_price_all_market_gather
DROP INDEX cp_id_2 ; 其中product_price_all_market_gather
为表名,cp_id_2 为唯一索引标记
影响:
页面会展示多条数据