问题标签 [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.
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_HOME
并LD_LIBRARY_PATH
通过 unix shell ( export LD_LIBRARY_PATH=...
) 它可以正常工作。有什么建议吗?
mysql - perl 在脚本中打包 dbd mysql 模块
我有一个脚本并将所有外部模块保存在本地,这样我就可以将我的整个脚本打包成一个 zip 并让它在所有机器上运行,而无需在不同机器上安装所有模块。我愿意:
我正在尝试启动与 mysql 数据库的连接,所以我需要在本地安装 DBD、DBI 和 mysql 我该怎么做?我通过复制 .pm 文件尝试了同样的方法,它要么给了我
或者
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 模块方面的投入。
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
perl - 通过 Perl 的 DBI $sth->execute() 函数将字符串插入数据库时将字符串转换为数字
我正在使用 Perl 的 DBI 和 SQLite 数据库(我安装了 DBD::SQLite)。我有以下代码:
我遇到的问题是,当$book_info->{identica}
它们以 0 开头时,它们会被删除,并且我在数据库中插入了一个数字。
例如,identica
of00123
将转换为123
.
我知道 SQLite 没有类型,那么如何让 DBI 插入identica
as 字符串而不是数字?
"$book_info->{identica}"
我尝试在传递给时引用它,$sth->execute
但这没有帮助。
编辑
即使我直接在查询中插入值它也不起作用:
这仍然转换00123
为123
, 和...0000000009
9
编辑
天哪,我在命令行上做了这个,我得到了这个:
它被 SQLite 删除了!
这是架构的外观:
有什么想法吗?
解决方案
这是 sqlite 问题,请参阅 Jim 的评论中的答案。STRING
必须在TEXT
sqlite中。否则它会将其视为数字!
将架构更改为以下解决了它:
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 用户身份登录时我看不到该目录。
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 安装错误。
perl - Bugzilla throwing error DBD:Pg fail in DynaLoader?
The following error shown when I access bugzilla:
What can I do to fix this?
json - perl DBI recipes 列数组
下面是我的sql查询输出
连接和检索结果的 Perl 过程
我一直在阅读http://www.perlmonks.org/?node_id=284436#fetching但我不知道如何将列值存储为数组元素。(如下所示)
此外,默认情况下,值字段在 json 中以“字符串”的形式出现,关于如何将它们转换为数字的任何建议?
perl - 使用 Solaris 11 64 位安装 CGI、DBI 和 DBD::Oracle
我尝试在 64 位 Solaris 环境中安装CGI、DBI和DBD::Oracle和驱动程序,但收效甚微。我遇到的错误数量令人难以置信,而我尝试过的变通解决方案的数量——从更改环境变量、更改目录引用、移动和复制文件、更改编译器等——甚至更糟。最糟糕的是,在最新版本的 Solaris 中安装上述模块的文档很少。
这是我们已经完成的初始步骤。
首先我们去http://search.cpan.org/。然后我们下载:
接下来我们打开一个终端窗口,切换到root,然后导航到我们的“下载”文件夹。
从这里我们解压之前下载的文件(这里没有问题):
/li>然后我们将 tar 文件归档以备日后需要。
/li>这是有点令人困惑的地方,因为我们不确定这些步骤是否完全必要。基本上,我们认为我们需要设置正确的 Perl(最新的 Oracle 需要 64 位,默认使用的 Perl 是 32 位)。
- 键入
which perl
以确定您正在使用的 Perl 的当前版本。它应该表明您使用的是默认版本(或 32 位)。 - 通过执行以下操作验证您是否有可用的 64 位 Perl 安装:
file /opt/oracle/rdbms/perl/bin/perl
- 你应该看到
ELF 64-bit LSB executable AMD64 Version 1 [SSE2 SSE FXSR CMOV FPU], dynamically linked, not stripped<
。 - 通过将它添加到
PATH
变量来切换到使用这个版本的 Perl:export PATH=/opt/oracle/rdbms/perl/bin:$PATH
- 键入
which perl
。验证这现在是否显示位于 的 Perlopt/oracle/rdbms/perl/bin/perl
。 键入
/li>perl -V
,如果显示错误,请设置以下变量:
- 键入
现在我们设置
cc
(编译器)工作,以便我们可以安装 CGI/DBI/DBD-Oracle。- 键入
cc --version
以验证它是否说cc
未找到。 - 打开浏览器并导航到Solaris Studio。在这里,您将找到一个包含 Sun 编译器的软件包。
- 下载适用于 Solaris 11 OS 平台的“Solaris SPARC 上的 Tarfile”。
- 在您的终端窗口中,通过键入以下内容解压缩上述文件:
bzcat SolarisStudio12.3-solaris-sparc-bin.tar.bz2 | tar xf -
- 将
.bz2
文件移动到我们之前创建的存档文件夹:mv SolarisStudio12.3-solaris-sparc-bin.tar.bz2 $HOME/Downloads/archive_tar
- 现在我们想将新编译器添加到我们的路径中,我们通过以下方式执行此操作:
export PATH=$PATH:/home/oracle/Downloads/SolarisStudio12.3-solaris-sparc-bin/solarisstudio12.3/bin
- Type
cc --version
,这个命令不应该做任何事情(可能会抛出一些警告),但它不会再说cc not found
了。
- 键入
在这里,我们开始安装模块和驱动程序,从 CGI 模块开始:
- 导航
$HOME/Downloads/CGI.pm-3.59
- 类型
perl Makefile.PL
我们需要更改 make 文件以指向正确的位置。
- 类型
vi Makefile
:%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
:%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
- 类型
现在输入
make
- 然后输入
make install
- 接下来我们进入 DBI 模块。导航到
$HOME/Downloads/DBI-1.621
。 - 类型
perl Makefile.PL
同样,我们需要更改此 make 文件以指向正确的位置。
- 类型
vi Makefile
:%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
:%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
- 类型
然而,这些改变了我们不想改变的两条线。因此,请查找
/li>MAKEMAKER
并将XSUBPPDIR
它们设置回以下值。现在输入
make
- 然后输入
make install
- 现在导航到
$HOME/Downloads/DBD-Oracle-1.44
- 类型
perl Makefile.PL
- 导航
这基本上就是我们use DBI 1.51;
在 Makefile 中的第 21 行遇到致命错误的地方,并且跟踪堆栈表明@INC
cannot locate DBI.pm
。这就是我试图移动二进制库文件的原因。我目前无法访问 Solaris 盒子,所以我无法重新发布确切的错误代码,我应该可以在星期二包含该代码(我最早可以回到机器上)。有人对此有任何想法吗?
使用 CPAN shell 的替代路由
打开终端窗口并以
/li>root
用户身份安装以下软件包:导航到 $oracle_home
/li>cd $oracle_home
并:修改
PERL5LIB
环境变量:export PERL5LIB=/apps/twiki-root/perlmodules
- 通过键入以下内容进行验证:
echo $PERL5LIB
打开 CPAN shell 并更新它:
如果这是第一次,请按
/li>return
接受自动配置。现在输入以下命令来修改 CPAN 的镜像位置:打开
Config.pm
文件并按如下所述进行修改:修改这些值:
写入/保存到文件并退出 →
:wq
确保您
gcc
已设置:通过以下方式验证:
which gcc
现在再次打开 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
:/