加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl通过CPAN安装DBD::Oracle时出错(2)

发布时间:2020-12-16 00:09:52 所属栏目:大数据 来源:网络整理
导读:在上一篇中对相关情况进行了描述,通过CPAN自动安装模块DBD::Oracle时报错,无法正常安装,已找到解决方法,具体情况如下: 1、第一次安装时,根据错误提示,确认为ORACLE_HOME没有设置,导致在加载时随意设置了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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读