当前位置: 首页 > news >正文

在线销售型网站产品汕头住房和城乡建设厅网站

在线销售型网站产品,汕头住房和城乡建设厅网站,百度收录链接,河南招投标信息网1785年,卡文迪许在实验中发现,把不含水蒸气、二氧化碳的空气除去氧气和氮气后,仍有很少量的残余气体存在。这种现象在当时并没有引起化学家的重视。 一百多年后,英国物理学家瑞利测定氮气的密度时,发现从空气里分离出来…

1785年,卡文迪许在实验中发现,把不含水蒸气、二氧化碳的空气除去氧气和氮气后,仍有很少量的残余气体存在。这种现象在当时并没有引起化学家的重视。 一百多年后,英国物理学家瑞利测定氮气的密度时,发现从空气里分离出来的氮气每升质量是1.2572克,而从含氮物质制得的氮气每升质量是1.2505克。经多次测定,两者质量相差仍然是几毫克。--- <氩气的发现> 点击查看更多

对账系统的核心计算部分在定时任务timetask项目中,其中python脚本从sql server中按规则获取并计算当天符合条件的记录,写入到mysql中;展示部分(店主端)属于早期项目,没有用golang,用php的lumen框架,从mysql相应表中查取数据


alt
alt

后来同事反应,店主端资金明细展示,出现重复或者漏项等情况.查看了数据库,数据本身并无问题,不存在重复或缺少,于是推出是展示部分出现了问题

  • 看了一下sql语句,因业务要求,这段sql由几个union all拼接而成,然后有order by,再limit;于是推断每次请求查出的结果不同(每次顺序会变化),再经过limit分页,就出现了所谓的数据"重复"和"缺漏"

  • 网上很多关于union all order by 导致乱序的问题,但我这段sql,并不会如此;

  • 后来发现顺序发生改变的一个原因,是有几条记录order by的字段完全一样;看上去只需要再加一个order by的字段如id asc,就可以解决问题

alt

但不想就此停止,因为看上去用navicat执行这段sql,无论多少次,结果顺序都是稳定的;为了深入研究,抽象化后建了两张表

CREATE TABLE `cui` (
  `id` int(11NOT NULL AUTO_INCREMENT,
  `name` varchar(255DEFAULT '',
  `book` varchar(255DEFAULT NULL,
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

insert into `你的库名`.`cui` ( `id``name``book``create_time`values ( '1''宋江''<水浒传>''2018-07-11 00:00:00');
insert into `你的库名`.`cui` ( `id``name``book``create_time`values ( '2''卢俊义''<水浒传>''2018-07-11 00:00:00');
insert into `你的库名`.`cui` ( `id``name``book``create_time`values ( '3''吴用''<水浒传>''2018-07-11 00:00:00');
insert into `你的库名`.`cui` ( `id``name``book``create_time`values ( '4''公孙胜''<水浒传>''2018-07-11 00:00:00');
insert into `你的库名`.`cui` ( `id``name``book``create_time`values ( '5''关胜''<水浒传>''2018-07-11 00:00:00');
insert into `你的库名`.`cui` ( `id``name``book``create_time`values ( '6''林冲''<水浒传>''2018-07-11 00:00:00');

CREATE TABLE `shuang` (
  `id` int(11NOT NULL AUTO_INCREMENT,
  `name` varchar(255DEFAULT '',
  `book` varchar(255DEFAULT NULL,
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

insert into `你的库名`.`shuang` ( `id``name``book``create_time`values ( '1''林黛玉''<红楼梦>''2018-07-11 00:00:00');
insert into `你的库名`.`shuang` ( `id``name``book``create_time`values ( '2''薛宝钗''<红楼梦>''2018-07-11 00:00:00');
insert into `你的库名`.`shuang` ( `id``name``book``create_time`values ( '3''贾元春''<红楼梦>''2018-07-11 00:00:00');
insert into `你的库名`.`shuang` ( `id``name``book``create_time`values ( '4''贾探春''<红楼梦>''2018-07-11 00:00:00');
insert into `你的库名`.`shuang` ( `id``name``book``create_time`values ( '5''史湘云''<红楼梦>''2018-07-11 00:00:00');
insert into `你的库名`.`shuang` ( `id``name``book``create_time`values ( '6''妙玉''<红楼梦>''2018-07-11 00:00:00');


  • ***经过多次实践发现,用lumen或者pdo执行几次后,最开始几次一定会乱序,随着执行次数的增多,会渐"趋于稳定",这是个神奇的现象;为复现顺序会变,可多次修改表名 ***

  • 在lumen中写一个方法测验:

alt
alt
alt
alt

  • navicat中的执行结果如下,无论执行多次,返回值始终幂等如一
alt
  • 但此时还不能认为是lumen存有问题,也许是navicat做了什么处理,还需要查看执行原始sql的结果;见下图,执行多次亦始终如一
alt
  • 其实这里还有一个小问题,那就是虽然同样"稳定",但navicat和命令行执行结果,可能出现不一样的情况...即用navicat执行上面这段sql无论多少次,返回的结果始终如a不会改变;命令行执行这段sql无论多少次,始终如b,但a和b顺序可能不同;这是实践得出的一个非必现的诡异现象

  • 在我准备给lumen提pr时,h哥提出,还要看看php的mysql扩展(在此即pdo)有无问题.框架的orm操作基于php的mysql扩展,如果上游数据即会变序,lumen这里肯定会每次执行顺序不同

alt
alt
  • pdo直连数据库,代码及结果如下:

  • 在pdo这一步,如果union all中order by的字段存在相同的情况,就会发生乱序;不知道这是扩展的bug,还是官方已说明如此,为此,需要和PECL进行沟通;

本文由 mdnice 多平台发布

http://www.yayakq.cn/news/174935/

相关文章:

  • 网络公司网站asp网站怎么正确的做内链接
  • 怎么添加网站后台wordpress收费破解模板
  • js网站页面效果代码如何做网站导航栏
  • 沈阳网站营销做好市场定位的方法
  • 深圳中小企业网站建设可以做网站素材的服装
  • 邢台网站制作地方北京高端网站设计
  • 网站风格的表现形式怎么给网站做链接
  • 营销型网站建设项目需求表做网站有什么建议
  • 代做网站收费标准在线编辑图片加字
  • 网站前端设计要做什么的为什么做腾讯网站
  • 摄影公司网站开发网站空间速度
  • 旅游网站设计图免费漫画app推荐
  • 做网站没有活免费ppt模板下载免费版简约
  • 备案过的网站换空间国际外贸平台排名
  • gvm网站是什么类的网站哪个网站可以做魔方图片
  • 科技微网站昆明移动网站建设
  • 现在建网站挣钱吗高端定制建站公司
  • 搜讯网站开发移动的网络网站建设
  • 建设工程网上质检备案网站北理离线《网站开发与应用》
  • 徐州做网站公司哪家好wordpress通过标题调用相关文章
  • 番禺做网站报价做网站便宜还是app便宜
  • 游戏类企业网站模板设计公司logo制作
  • 安装wordpress只有文字厦门seo建站
  • 襄阳网站制作苏州建网站公司
  • 自己做的美食分享到网站太原it培训机构
  • 张氏万家网站建设企业网站源码
  • K12网站怎么建设微网站开发报价
  • 瑞安网站建设步骤个人养老保险缴费查询
  • 四川省建设厅门户网站宜宾市建设教育培训中心网站
  • 电商网站构建预算方案山西网站建设推荐