免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 50653 | 回复: 6

Could not do a physical-order read to fetch next row [复制链接]

论坛徽章:
0
发表于 2017-05-09 11:48 |显示全部楼层
进程读取数据正常(有时会读出空数据),在移数据和删除数据时偶尔会抛出Could not do a physical-order read to fetch next row的异常,
如果在读数据之前执行一下:set lock mode to wait 10;//意思是设置锁等待时间为10ms ,那么就不会出现任何异常,
设置锁等待为什么就能解决这种异常问题,是什么原理?望大神解惑~

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2017-05-09 13:18 |显示全部楼层
其他会话锁住了当前会话需要访问的记录。因此,当前会话会报无法读取该记录。
使用锁等待时,可以等其他会话完成操作,并释放锁资源。。

建议锁改成行锁,并使用适当的索引。。可以降低出现的机率。

论坛徽章:
0
发表于 2017-05-09 14:54 |显示全部楼层
本帖最后由 bszwxq777 于 2017-05-09 14:56 编辑

回复 2# liaosnet

有A ,B两张表,B是A的历史表,我的操作流程如下:步骤一:select first 50 * from A where status=0;//ID唯一键,假设为变量:b00
步骤二:insert into B select * from A where ID=:b00;
步骤三:delete from A where ID=:b00;

直接这样操作时,步骤一偶尔会读出超过50条的非法数据,不知道是什么原因,步骤二和步骤三会抛出如题异常;
如果在步骤一前面加上set lock mode to wait 10,这样基本就不会有上述问题出现

问题一:为什么步骤一会读出超过50条的空数据?
问题二:set lock mode to wait 10 是对步骤一、二、三都有效吗?
问题三:步骤一执行成功后,按理步骤二是不会报错的,因为数据都是已写入完成的,究竟什么情况才会导致步骤二移数据不成功?
问题四:同问题三,步骤三删除已存在的数据,为什么会抛出如题异常?
这几个问题比较纠结,一直没理解,如果方便,请加我QQ454326777,求教了~

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
发表于 2017-05-09 17:11 |显示全部楼层
1。返回超过50条记录这个不太可能吧,会否是你数错了?
2。set lock mode的作用范围是从set lock mode开始至session结束。如果步骤1、2、3是在同一SESSION中,那么会都有效。
3。步骤1和步骤2无任何关联吧。
4。如果你所要删除的记录正在被其它的程序访问或操作就有可能跑出异常,这是正常现象。建议修改表的锁模式为行级锁,并在相关的栏位上建索引,如ID,STATUS上,以降低顺序扫描发生的机率。

论坛徽章:
0
发表于 2017-05-09 17:34 |显示全部楼层
回复 4# yunzhongyue

确实出现了超过50条的情况,而且读出的是空数据,不知道什么原因导致的,
已经是行级锁且用到了索引,如果不设置等待就有异常,贴出部分日志如下:

1、移数据异常
2017-05-09 15:55:08 ERROR COrgnizeCoreInfo 151 19694836 [0xf771c740] - 主进程处理数据开始--2
2017-05-09 15:55:08 ERROR ADBWork 672 19695111 [0xf771c740] - 数据库批量执行出错:【Statement Execute】【[Informix][Informix ODBC Driver][Informix]Could not do a physical-order read to fetch next row. sqlerrm(dxpf10)】
2017-05-09 15:55:08 ERROR COrgnizeCoreInfo 193 19695111 [0xf771c740] - 第0条插入语句|INSERT INTO dxpf40 SELECT * FROM dxpf10 WHERE trim(dx10date)='20170518' AND dx10stan=13816180 AND dx10seq=1  AND dx10stat='0'
2017-05-09 15:55:08 ERROR COrgnizeCoreInfo 193 19695112 [0xf771c740] - 第1条插入语句|INSERT INTO dxpf40 SELECT * FROM dxpf10 WHERE trim(dx10date)='20170518' AND dx10stan=13816181 AND dx10seq=1  AND dx10stat='0'
2017-05-09 15:55:08 ERROR COrgnizeCoreInfo 195 19695112 [0xf771c740] - 插入INFORMIX数据库失败

2、删数据异常
2017-05-09 15:55:08 ERROR ADBWork 672 19695416 [0xf771c740] - 数据库批量执行出错:【Statement Execute】【[Informix][Informix ODBC Driver][Informix]Could not do a physical-order read to fetch next row. sqlerrm(dxpf10)】
2017-05-09 15:55:08 ERROR COrgnizeCoreInfo 205 19695417 [0xf771c740] - 第0条删除语句|DELETE FROM dxpf10 WHERE trim(dx10date)='20170518' AND dx10stan=13816180 AND dx10seq=1  AND dx10stat='0'
2017-05-09 15:55:08 ERROR COrgnizeCoreInfo 205 19695417 [0xf771c740] - 第1条删除语句|DELETE FROM dxpf10 WHERE trim(dx10date)='20170518' AND dx10stan=13816181 AND dx10seq=1  AND dx10stat='0'
2017-05-09 15:55:08 ERROR COrgnizeCoreInfo 207 19695417 [0xf771c740] - 删除INFORMIX数据失败
2017-05-09 15:55:08 ERROR COrgnizeCoreInfo 210 19695417 [0xf771c740] - 主进程处理数据结束--0

3、读出超过指定条数异常
2017-05-09 17:22:03 ERROR COrgnizeCoreInfo 151 24910542 [0xf771c740] - 主进程处理数据开始--12
2017-05-09 17:22:03 ERROR COrgnizeCoreInfo 157 24910542 [0xf771c740] - INFORMIX取数据异常,本次不做处理!!!

论坛徽章:
0
发表于 2017-05-09 17:34 |显示全部楼层

天天天天天天天天天天天天天天天天天天天天

本帖最后由 bszwxq777 于 2017-05-09 17:37 编辑

天天天天天天天天天天天天天天天天天天天天

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
发表于 2017-05-12 15:57 |显示全部楼层
WHERE trim(dx10date)='20170518' 这种情况下不会走dx10date上的索引,建议去掉trim
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP