Perl脚本引发dll错误



我有perl脚本连接到Oracle数据库,打开文本文件并从数据库表中的文件加载数据,该脚本在我的开发机器(windows xp 32位)上完美地工作,但是当我将脚本加载到生产服务器(windows 2003 64位)并从命令行运行时,它打开perl.exe -无法找到组件窗口,消息说

此应用程序启动失败,因为找不到OCI.dll。重新安装应用程序可能会解决此问题。

命令行输出为:

install_driver(Oracle) failed: Can't load'C:/Perl64/lib/auto/DBD/Oracle/Oracle.dll' for模块DBD::Oracle:load_file:%1不是一个有效的Win32应用程序C:/Perl64/lib/DynaLoader。PM第191行。at (eval 14) line3编译在require (eval 14)第3行失败。也许是必要的共享库或DLL未安装在预期位置c:warranty warantyimport .pl line 15

我已经重新安装了oracle客户端,我已经尝试卸载active perl和oracle客户端,然后在perl之前安装oracle客户端,因为听说这可能会导致问题。

我认为它可能是权限,所以我写了一个简单的perl脚本来打开oci.dll并抛出一个错误,如果不能,它能够正确打开它。

我已经确保C:oracleproduct10.2.0client_1bin在PATH环境变量中。

我可以使用SQLPlus

连接到数据库

我已将OCI.dll添加到与perl脚本相同的目录中。

和我现在终于跑出的想法....有谁能给点建议吗?我正绞尽脑汁想把它修好呢。

详细信息服务器正在运行ActivePerl 5.14.1 Build 1401(64位)Oracle数据库是10gOracle客户端是10.2.0

我有一个类似的问题,但对于64位版本的Perl。我设法通过获得正确的客户端库和阅读本指南来解决这个问题:
http://www.pythian.com/news/11115/dbdoracle -和- windows - 64 bit/

基本上,我正在运行Oracle 11g XE R2,它只有32位。所以我怀疑它正在寻找64位客户端库,但没有找到它们。所以我下载了:
instantclient-basic-windows.x64-11.2.0.3.0.zip
instantclient-sqlplus-windows.x64-11.2.0.3.0.zip
instantclient-sdk-windows.x64-11.2.0.3.0.zip
来自:
http://www.oracle.com/technetwork/topics/winx64soft - 089540. - html
并安装到c:oraclexeinstantclient_11_2

我添加了这些到我的路径:
C:>set PATH = C: oraclexeinstantclient_11_2;%PATH%
但不幸的是,错误仍然存在:(

查看我的PATH:
回声%路径%
我可以看到集合被忽略了。我猜这是权限问题。

所以我编辑了系统路径变量并重新启动了命令提示符。这解决了这个问题,并允许我连接:)

是否混合了一些32位和64位组件?显然,您需要64位的Perl、64位的DBI和DBD::Oracle以及用于Oracle客户端的64位dll。我只建议你检查,因为错误说"不是一个有效的Win32应用程序"。

相关内容

  • 没有找到相关文章

最新更新