perl通过CPAN安装DBD::Oracle时出错(2)
在上一篇中对相关情况进行了描述,通过CPAN自动安装模块DBD::Oracle时报错,无法正常安装,已找到解决方法,具体情况如下: 1、第一次安装时,根据错误提示,确认为ORACLE_HOME没有设置,导致在加载时随意设置了oracle的目录,导致相关东西找不到。 2、在系统环境变量中添加ORACLE_HOME后,仍旧报错。原因为:没有关闭窗口,重新打开,导致增加的环境变量没有起作用 3、增加进环境变量后,执行安装模块命令,可以进行安装,但在安装过程中报错:提示...oracle.dll DLL load failed: %1 不是有效的 Win32 应用程序。 (关键问题在这) ? ?3.1 第一次处理,路过test,直接强制安装模块cpan>force install DBD::Oracle,模块是可以安装上,但在使用时,仍会执行test报错,无法运行perl程序 ? ?3.2 通过网上查找,得知模块加载编译有两种方式:一种是纯Perl写的,没有依赖性,不需要编译。一种是C/C++写的,需要链接库文件进行编译。DBD::Oracle是后者。而报错信息为,无法加载oracle.dll文件,使用的加载程序为oracle下的,所以想到是加载程序有问题(因为模块存在),而oracle_home是设置了的。经过多方面查找,想到了版本问题。 ? ?本机为64位,当初安装oracle10g时未注意到版本,而strawberry perl下载安装的为64位。进入数据库查看:sql>select * from v$version; 看到win-32bit,意识到是数据库版本与perl版本不一致,导致在使用oracle下的工具来加载文件oracle.dll时,无法加载,报错。 解决方法:重新安装oracle为64位,重新设置oracle_home,没有报无法加载oracle.dll,此报错解决。 http://tonyqiu.iteye.com/blog/1296583 然在test时,又出现新问题,在执行时,会导致perl崩溃,以下几个地方失败,最后:test not OK (这几个地方失败,不影响DBD::Oracle的使用)失败的原因还有待查明。 t/30long.t .................... 95/479 # ? Failed test 'blob_read_all = length($long_data[0])' # ? at t/30long.t line 274. # ? ? ? ? ?got: 0 # ? ? expected: 10240 # ? Failed test 'Strings are of different lengths (0 vs 10240)' # ? at t/30long.t line 276. # ? Failed test 'fetchrow_arrayref 2: select idx,lng,dt from dbd_ora__drop_me order by idx' # ? at t/30long.t line 280. t/30long.t .................... Dubious,test returned 5 (wstat 1280,0x500) Failed 156/479 subtests (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |