.net在读取oracle数据库时用read()方法时,当读到最后一条记录时,按常理read()返回的值是false,但此时却抛出ORA-01002的异常,在debug的时侯有时不会再现,如果直接运行,几乎每次都再现,只XP系统下会再现,但若同样代码换另一个xp系统执行就不会出错,确认过环境变量Path里面几乎都一样
请教高手,这个是什么原因造成的,如何解决,谢谢
在read()的循环语句里有对数据库的插入处理,而且是在循环外面commit的,会有影响么?
大概知道原因了,是因为查询语句中有锁表的操作:for update wait的语句的关系,去掉就不会出现这个bug了
确认过了都是oracle11g,但按常理两种方法都应该可以,只是如果可能是环境的问题的话能不改代码最好,维护项目。。。
追答虽然都是11g,但Oracle客户端也可以配置的,配置可以不一样的,而且配置不是想java在path那里设置的,而是在注册表里设置的,需要对比注册表。
确定问题的最好办法是做一台虚拟机进行测试。
11g的Oracle可不可以卸载得很干净,如果不行请重新安装系统。
做虚拟机很麻烦吧?没做过~~
如果要是比较注册表该如何比较呢?
上次说得有问题不是对比注册表,
是对比/etc/profile ,sqlnet.ora ,tnsnames.ora 文件。
最好还是重装系统吧
文件应该是没问题的,因为这个bug有时也不再现,可以正常运行的,也行是oracle客户端的问题,唉!~要是没办法的话就只能先卸了重装试试了~
谢谢了~