无法在 Windows 上安装 DBD::Oracle for Perl

Unable to Install DBD::Oracle for Perl on Windows

尝试安装 DBD::Oracle 库时,我收到以下错误消息 "Can't load /usr/lib/perl5/site_perl/5.24/x86_64-cygwin-threads/auto/DBD/Oracle/Oracle.dll for module DBD::Oracle: No such file directory at /usr/lib/perl5/5.24/x86_64-cygwin-threads/DynaLoader.pm"

我使用以下步骤在 windows 上安装了 DBD::Oracle 库:

instantclient-basic-11.2.0.4.0

instantclient-sqlplus-11.2.0.4.0

instantclient-sdk-11.2.0.4.0

然后,我将它们全部解压到c:\Oracle。 接下来,我在 windows 上的系统环境中包含以下目录,如下所示

ORACLE_HOME=C:\Oracle\instantclient_11_2 LD_LIBRARY_PATH=C:\Oracle\instantclient_11_2\lib(这个文件夹里没有lib目录,不过我还是照着网上的一篇文章做了)

最后,我打开命令提示符和 运行 并收到错误消息:

perl -MCPAN -e "install DBD::Oracle"

我通过将 32 位 Oracle Client 11g 版本安装到计算机的 c:\oracle 位置解决了这个问题。它不能使用 instantclient 版本,因为 instant client 不包含必要的库。

从下面link下载"Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windows (32-bit)"并安装完整的管理员版本 http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html

接下来,在您的计算机上的环境变量中创建ORACLE_HOME变量,并向其添加以下路径:ORACLE_HOME=C:\Oracle\product.2.0\client_1

接下来,创建 LD_LIBRARY_PATH 变量并添加以下路径: LD_LIBRARY_PATH=C:\Oracle\product.2.0\client_1\lib

然后,使用 perl 安装模块而不测试它。在测试期间它会失败,因为它正在尝试连接到您的数据库:

  1. perl -MCPAN -e shell
  2. 测试安装DBD::Oracle

在此位置 C:\Windows\SysWOW64\ 中打开 odbcad32.exe,然后单击“添加”。键入 Oracle 作为名称和描述,然后单击保存。 SysWOW64 将连接 32 位版本的 odbcad32 应用程序以创建引用。

注意:您将遇到的最大问题是确保您使用的是 32 位驱动程序(使用 cygwin、oracle 软件和 odbcad32)。如果您将 64 位驱动程序与 32 位驱动程序混合使用,您将收到无法加载库的消息。

重新打开任何命令提示符 window 并再次尝试 运行 您的 perl 脚本。