问题标签 [dbd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
7135 浏览

perl - %ENV 不起作用,我无法使用共享库

我不能%ENV在我的 Perl 脚本上使用 var 来使用 Oracle 库。

如果我打印$ENV{'ORACLE_HOME'}并且$ENV{'LD_LIBRARY_PATH'}一切正常,但是当我运行我的脚本时出现错误:

install_driver(Oracle) 失败:无法为模块 DBD::Oracle 加载“/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so”:libclntsh.so.10.1:无法打开共享对象文件:否这样的文件或目录在 /usr/lib64/perl5/DynaLoader.pm 第 200 行。在 (eval 3) 第 3 行编译在 (eval 3) 第 3 行的 require 中失败。可能所需的共享库或 dll 没有安装在预期的位置在 persistence.perl 第 22 行

在网上搜索我发现在 Perl 上设置环境变量的正确方法是使用%ENV哈希。

导出ORACLE_HOMELD_LIBRARY_PATH通过 unix shell ( export LD_LIBRARY_PATH=...) 它可以正常工作。有什么建议吗?

0 投票
1 回答
490 浏览

mysql - perl 在脚本中打包 dbd mysql 模块

我有一个脚本并将所有外部模块保存在本地,这样我就可以将我的整个脚本打包成一个 zip 并让它在所有机器上运行,而无需在不同机器上安装所有模块。我愿意:

我正在尝试启动与 mysql 数据库的连接,所以我需要在本地安装 DBD、DBI 和 mysql 我该怎么做?我通过复制 .pm 文件尝试了同样的方法,它要么给了我

或者

0 投票
1 回答
634 浏览

mysql - DBD-mysql 错误:您选择的 CPU 不支持 x86-64 指令集

我在 5.14.2 上安装 DBD-mysql-4.020 perl 模块。

运行make时,我遇到以下错误:

cc -c -I/u01/app/appadmin/product/perl-5.14.2/lib/site_perl/5.14.2/x86_64-linux/auto/DBI -I/usr/local/mysql-standard-4.1.14- pc-linux-gnu-i686/include -mtune=pentiumpro -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\" 4.020\" -DXS_VERSION=\"4.020\" -fPIC "-I/u01/app/appadmin/product/perl-5.14.2/lib/5.14.2/x86_64-linux/CORE" dbdimp.c dbdimp.c: 1:错误:您选择的 CPU 不支持 x86-64 指令集 make: * [dbdimp.o] 错误 1

将编译器升级到 gcc4.4 并付出了很多努力来克服这个问题。非常感谢您在解决此问题和安装 perl 模块方面的投入。

0 投票
2 回答
2742 浏览

perl - BEGIN 块中 LD_LIBRARY_PATH 的初始化失败

我必须将 /oracle/v10.2.0/lib 添加到 LD_LIBRARY_PATH 才能使用 DBI 模块连接到 Oracle。

如果我在执行 perl 脚本之前在 shell 中设置 LD_LIBRARY_PATH ,一切都很好。

但它不适用于脚本:

当我执行脚本时,我收到错误:

install_driver(Oracle) 失败:无法为模块 DBD::Oracle:libclntsh.so.10.1 加载“/usr/apps/perl5/site_perl/5.8.8/i686-linux/auto/DBD/Oracle/Oracle.so” :无法打开共享对象文件:/usr/apps/perl5/5.8.8/i686-linux/DynaLoader.pm 第 230 行没有这样的文件或目录。在(eval 3)第 3 行编译失败(eval 3)第 3 行。可能在 /var/tmp/getTraceDB.pl 第 23 行的预期位置未安装所需的共享库或 dll

0 投票
2 回答
989 浏览

perl - 通过 Perl 的 DBI $sth->execute() 函数将字符串插入数据库时​​将字符串转换为数字

我正在使用 Perl 的 DBI 和 SQLite 数据库(我安装了 DBD::SQLite)。我有以下代码:

我遇到的问题是,当$book_info->{identica}它们以 0 开头时,它们会被删除,并且我在数据库中插入了一个数字。

例如,identicaof00123将转换为123.

我知道 SQLite 没有类型,那么如何让 DBI 插入identicaas 字符串而不是数字?

"$book_info->{identica}"我尝试在传递给时引用它,$sth->execute但这没有帮助。

编辑

即使我直接在查询中插入值它也不起作用:

这仍然转换00123123, 和...00000000099

编辑

天哪,我在命令行上做了这个,我得到了这个:

它被 SQLite 删除了!

这是架构的外观:

有什么想法吗?

解决方案

这是 sqlite 问题,请参阅 Jim 的评论中的答案。STRING必须在TEXTsqlite中。否则它会将其视为数字!

将架构更改为以下解决了它:

0 投票
1 回答
3235 浏览

perl - 安装 DBD::Oracle

我正在尝试按照这些说明在 Mac (Snow Leopard 10.6.8) 上安装 DBD::Oracle:How do you install perl DBD::Oracle on OSX Snow Leopard 10.6

一切正常,直到我尝试跑步

当我尝试运行此命令时,我收到以下错误:

如果这很重要,说明应该从哪个目录运行该命令有点令人困惑。我尝试在以 root 用户身份登录时从 oracle_instantClient64 目录运行它,在以普通用户身份登录时从 oracle_instantClient64 目录运行它,在以普通用户身份登录时从 ~/.cpan/build 目录运行它。该帖子似乎暗示该命令应在以 root 用户身份登录时从 ~/.cpan/build 目录运行,但以 root 用户身份登录时我看不到该目录。

0 投票
2 回答
4938 浏览

mysql - 为什么当我尝试使用 Perl 的 DBD::mysql 时会出错?

我正在尝试使用 Perl 将数据写入 MySQL 数据库。但是,当我运行脚本时,出现以下错误:

Can't locate loadable object for module DBD::mysql in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at LargeLDAPSearch.pl line 10.

我确实有这些“使用”语句和以下代码。这只是一小段摘录,因为该脚本在我尝试数据库连接之前有效:

我进入了本地的 Perl 文件夹,并搜索了 lib 文件目录。在/lib/子文件夹中,我有两个文件夹,一个 DBI 和一个 DBD 子文件夹,我在 DBD 中有 MySQL 子文件夹,在 DBI 下还有一个带有 MySQL 子文件夹的 DBD 子文件夹。 /lib/DBD/mysql/&`/lib/DBI/DBD/mysql/`

这可能是错误,在两个地方挑剔。我访问了 CPAN 网站,并尝试了手动安装步骤,但我收到有关 SQLLite 的 DBI 安装错误。

0 投票
1 回答
639 浏览

perl - Bugzilla throwing error DBD:Pg fail in DynaLoader?

The following error shown when I access bugzilla:

What can I do to fix this?

0 投票
2 回答
2894 浏览

json - perl DBI recipes 列数组

下面是我的sql查询输出

连接和检索结果的 Perl 过程

我一直在阅读http://www.perlmonks.org/?node_id=284436#fetching但我不知道如何将列值存储为数组元素。(如下所示)

此外,默认情况下,值字段在 json 中以“字符串”的形式出现,关于如何将它们转换为数字的任何建议?

0 投票
3 回答
11179 浏览

perl - 使用 Solaris 11 64 位安装 CGI、DBI 和 DBD::Oracle

我尝试在 64 位 Solaris 环境中安装CGIDBIDBD::Oracle和驱动程序,但收效甚微。我遇到的错误数量令人难以置信,而我尝试过的变通解决方案的数量——从更改环境变量、更改目录引用、移动和复制文件、更改编译器等——甚至更糟。最糟糕的是,在最新版本的 Solaris 中安装上述模块的文档很少。

这是我们已经完成的初始步骤。

  1. 首先我们去http://search.cpan.org/。然后我们下载:

  2. 接下来我们打开一个终端窗口,切换到root,然后导航到我们的“下载”文件夹。

  3. 从这里我们解压之前下载的文件(这里没有问题):

    /li>
  4. 然后我们将 tar 文件归档以备日后需要。

    /li>
  5. 这是有点令人困惑的地方,因为我们不确定这些步骤是否完全必要。基本上,我们认为我们需要设置正确的 Perl(最新的 Oracle 需要 64 位,默认使用的 Perl 是 32 位)。

    1. 键入which perl以确定您正在使用的 Perl 的当前版本。它应该表明您使用的是默认版本(或 32 位)。
    2. 通过执行以下操作验证您是否有可用的 64 位 Perl 安装:file /opt/oracle/rdbms/perl/bin/perl
    3. 你应该看到ELF 64-bit LSB executable AMD64 Version 1 [SSE2 SSE FXSR CMOV FPU], dynamically linked, not stripped<
    4. 通过将它添加到PATH变量来切换到使用这个版本的 Perl:export PATH=/opt/oracle/rdbms/perl/bin:$PATH
    5. 键入which perl。验证这现在是否显示位于 的 Perl opt/oracle/rdbms/perl/bin/perl
    6. 键入perl -V,如果显示错误,请设置以下变量:

      /li>
  6. 现在我们设置cc(编译器)工作,以便我们可以安装 CGI/DBI/DBD-Oracle。

    1. 键入cc --version以验证它是否说cc未找到。
    2. 打开浏览器并导航到Solaris Studio。在这里,您将找到一个包含 Sun 编译器的软件包。
    3. 下载适用于 Solaris 11 OS 平台的“Solaris SPARC 上的 Tarfile”。
    4. 在您的终端窗口中,通过键入以下内容解压缩上述文件:bzcat SolarisStudio12.3-solaris-sparc-bin.tar.bz2 | tar xf -
    5. .bz2文件移动到我们之前创建的存档文件夹:mv SolarisStudio12.3-solaris-sparc-bin.tar.bz2 $HOME/Downloads/archive_tar
    6. 现在我们想将新编译器添加到我们的路径中,我们通过以下方式执行此操作:export PATH=$PATH:/home/oracle/Downloads/SolarisStudio12.3-solaris-sparc-bin/solarisstudio12.3/bin
    7. Type cc --version,这个命令不应该做任何事情(可能会抛出一些警告),但它不会再说cc not found了。
  7. 在这里,我们开始安装模块和驱动程序,从 CGI 模块开始:

    1. 导航$HOME/Downloads/CGI.pm-3.59
    2. 类型perl Makefile.PL
    3. 我们需要更改 make 文件以指向正确的位置。

      1. 类型vi Makefile
      2. :%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
      3. :%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
    4. 现在输入make

    5. 然后输入make install
    6. 接下来我们进入 DBI 模块。导航到$HOME/Downloads/DBI-1.621
    7. 类型perl Makefile.PL
    8. 同样,我们需要更改此 make 文件以指向正确的位置。

      1. 类型vi Makefile
      2. :%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
      3. :%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
    9. 然而,这些改变了我们不想改变的两条线。因此,请查找MAKEMAKER并将XSUBPPDIR它们设置回以下值。

      /li>
    10. 现在输入make

    11. 然后输入make install
    12. 现在导航到$HOME/Downloads/DBD-Oracle-1.44
    13. 类型perl Makefile.PL

这基本上就是我们use DBI 1.51;在 Makefile 中的第 21 行遇到致命错误的地方,并且跟踪堆栈表明@INCcannot locate DBI.pm。这就是我试图移动二进制库文件的原因。我目前无法访问 Solaris 盒子,所以我无法重新发布确切的错误代码,我应该可以在星期二包含该代码(我最早可以回到机器上)。有人对此有任何想法吗?

使用 CPAN shell 的替代路由

  1. 打开终端窗口并以root用户身份安装以下软件包:

    /li>
  2. 导航到 $oracle_homecd $oracle_home并:

    /li>
  3. 修改PERL5LIB环境变量:

    • export PERL5LIB=/apps/twiki-root/perlmodules
    • 通过键入以下内容进行验证:echo $PERL5LIB
  4. 打开 CPAN shell 并更新它:

    如果这是第一次,请按return接受自动配置。现在输入以下命令来修改 CPAN 的镜像位置:

    /li>
  5. 打开Config.pm文件并按如下所述进行修改:

    修改这些值:

    写入/保存到文件并退出 →:wq

  6. 确保您gcc已设置:

    通过以下方式验证:which gcc

  7. 现在再次打开 CPAN shell 并开始安装 DBI 模块。

    /li>

这就是一切都变得废话的地方。错误:

对不起,我花了这么长时间来编辑这个并提出错误,一路上有点忙。任何人都知道这个巨大的错误意味着什么?我认为这与编译器有关,只是不确定是什么。

新编辑

因此,在我找到解决方法后,它经历了安装过程(花费了令人惊讶的时间),最终得到了这个......

正是基于此,我继续前进,/home/oracle/perl5/perlbrew/bin/perlbrew switch perl-5.16.0但它又回来了,perl-5.16.0 is not installed


:/

我只是继续尝试寻找 perl-5.16.0 的实例并做了......

然后我尝试了,/home/oracle/perl5/perlbrew/bin/perlbrew switch /home/oracle/perl5/perlbrew/build/perl-5.16.0我仍然得到:/home/oracle/perl5/perlbrew/build/perl-5.16.0 is not installed

:/