- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试通过 DBI 连接到 Oracle,但无法正常工作。
我的设置:
# cat /proc/version
Linux version 2.6.18-194.el5 (mockbuild@ca-build10.us.oracle.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Mon Mar 29 20:06:41 EDT 2010
# uname -i
i386
# perl -v
This is perl, v5.8.8 built for i386-linux-thread-multi
<...>
# echo $ORACLE_HOME
/usr/lib/oracle/12.1/client
我正在尝试使用此脚本进行连接:
#!/usr/bin/perl
# dbi.pl
use warnings;
use strict;
use DBI;
$ENV{ORACLE_HOME}="/usr/lib/oracle/12.1";
$ENV{LD_LIBRARY_PATH}="/usr/lib/oracle/12.1/client/lib";
$ENV{NLS_LANG}="american_america.CL8MSWIN1251";
my $user='user';
my $pw='pw';
my $host='servername';
my $port='1521';
my $SID = 'SID';
my $source = "dbi:Oracle:$host;sid=$SID;port=$port";
my $dbh=DBI->connect($source,$user,$pw,{PrintError=>0,AutoCommit=>0,RaiseError=>1}) or die "Oracle:$DBI::errstr\n";
当我尝试执行它时出现错误:
# ./dbi.pl
install_driver(Oracle) failed: Can't locate DBD/Oracle.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 3) line 3.
Perhaps the DBD::Oracle perl module hasn't been fully installed,
or perhaps the capitalisation of 'Oracle' isn't right.
Available drivers: DBM, ExampleP, File, Proxy, Sponge, mysql.
at ./dbi.pl line 21
我尝试重新安装 DBD-Oracle:
root@hostname:/tmp/DBD-Oracle-1.66# perl Makefile.PL
Using DBI 1.52 (for perl 5.008008 on i386-linux-thread-multi) installed in /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/DBI/
Configuring DBD::Oracle for perl 5.008008 on linux (i386-linux-thread-multi)
Remember to actually *READ* the README file! Especially if you have any problems.
Installing on a linux, Ver#2.6
Using Oracle in /usr/lib/oracle/12.1/client
DEFINE _SQLPLUS_RELEASE = "1201000100" (CHAR)
Oracle version 12.1.0.1 (12.1)
Unable to locate an oracle.mk or other suitable *.mk
file in your Oracle installation. (I looked in
/usr/lib/oracle/12.1/client/rdbms/demo/demo_xe.mk /usr/lib/oracle/12.1/client/rdbms/demo/demo_rdbms32.mk /usr/lib/oracle/12.1/client/rdbms/demo/demo_rdbms.mk /usr/lib/oracle/12.1/client/rdbms/lib/ins_rdbms.mk /usr/share/oracle/12.1/client/demo.mk under /usr/lib/oracle/12.1/client)
The oracle.mk (or demo_rdbms.mk) file is part of the Oracle
RDBMS product. You need to build DBD::Oracle on a
system which has one of these Oracle components installed.
(Other *.mk files such as the env_*.mk files will not work.)
Alternatively you can use Oracle Instant Client.
In the unlikely event that a suitable *.mk file is installed
somewhere non-standard you can specify where it is using the -m option:
perl Makefile.PL -m /path/to/your.mk
See the appropriate README file for your OS for more information and some alternatives.
at Makefile.PL line 1187.
root@hostname:/tmp/DBD-Oracle-1.66# ls /usr/lib/oracle/12.1/client/
total 8.0K
drwxr-xr-x 2 root root 4.0K Sep 24 13:23 bin/
drwxr-xr-x 2 root root 4.0K Sep 24 13:23 lib/
root@hostname:/tmp/DBD-Oracle-1.66#
所以,我没有这个“rdbms”目录,因为我安装了 instantclient。有什么办法可以不用安装数据库就可以运行吗?
最佳答案
最近完整的 oracle 数据库安装没有安装 DBD::Oracle 所需的所有位。抱歉,我不记得您需要安装的可选位的名称。但是,另一种方法(也是一种更简单的方法)是下载 Oracle 即时客户端“basic”、“sdk”和“sqlplus”,将它们解压缩到某处并将您的 LD_LIBRARY_PATH 指向那个。它还使您独立于当前的 Oracle 数据库安装,这意味着如果您的 dba 升级它(或其中的一部分),您不需要考虑重建 DBD::Oracle。
顺便说一句,在你的 perl 脚本中设置你的 LD_LIBRARY_PATH 是行不通的——为时已晚。
关于perl - 在@INC 中找不到 DBD/Oracle.pm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19401822/
我刚刚找到了一个我们正在使用的脚本,它有一个子程序,里面写着 my %INC,它存储了一些关于激励的值,因此 %INC。这似乎从来都不是问题,或者从来没有人注意到。对我来说,它产生了 20 屏的重新定
我遇到以下问题。 Can't locate File/Remote.pm in @INC (@INC contains: /pkg/qct/software/perl/q4_06/.lib/site_
我有以下 NASM 汇编程序,运行时间约为 9.5 秒: section .text global _start _start: mov eax, 0 mov ebx, 8 loop:
如何检测字符串是article/page/inc/3/4在/的最后第三个索引中有inc? 并获取上面示例中 / 的最后第二个索引是 3? 我有两个不同的字符串,1:'article/page/4',2
我正在使用 Centos 6 并安装 Perl-CPAN 和开发工具。我似乎无法安装 Test:Harness::Straps 它会出现此错误: Can't locate Module/Build.p
当我尝试使用 $inc 在 mongodb 中按指定值增加字段时,出现以下错误 “未处理的拒绝 MongoError:‘$inc’中的美元 ($) 前缀字段‘$inc’对于存储无效。” 下面是我的代码
我使用 dompdf 通过 php 将 html 页面保存为 pdf。我在我的 html 页面(实际上是 php 页面)中使用波斯字符,但是当我尝试将其保存为 pdf 时,导出的内容看起来像“????
我有 window 。我想使用库tensorflow创建一个C++ op。通过https://www.tensorflow.org/guide/extend/op#compile_the_op_usi
我正在尝试通过 svn2git 将 svn 存储库导入到 git 中。当我运行 svn2git --verbose https://url_to_repo 时,我最终得到以下输出: Running c
我尝试将一些模块安装到新服务器 (fedora core 18),但出现此错误: Can't locate CPAN.pm in @INC (@INC contains: /usr/local/lib
这个问题在这里已经有了答案: What's the easiest way to install a missing Perl module? (24 个答案) 关闭 7 年前。 我有 Solari
这个问题在这里已经有了答案: What's the easiest way to install a missing Perl module? (24 个答案) 关闭 7 年前。 我有 Solari
我遇到了很多麻烦,我想安装 Mojo::DOM,但我在互联网上找不到安装它的指南。 最佳答案 apt install libmojolicious-perl 或者 cpan install Mojo:
如果我了解模块最终出现在@INC 下的各个目录中的原因,这将有助于我了解我拥有的模块 在 Windows 上的 ActiveState 下相当清楚 C:/Perl/lib C:/Perl/site/l
我想获取包含模块的完整文件名。考虑这段代码: package MyTest; my $path = join '/', split /::/, __PACKAGE__; $path .= ".pm";
所以我一直在尝试让 Electron 与 Perl6 一起工作,看起来在我努力破解东西以让它们工作之后,它只是不想这样做。我使用了以下脚本(来自 git 上 Electron 仓库的示例之一): #!
我有一堆脚本,我需要按顺序运行它们,如下所示 foreach my (qw (script1.pl script2.pl script3.pl ){ my $script=File::Spec->c
背景:我有一个 perl 模块——我们称它为 Foo::Common,它已安装在我们的一个文件服务器上(为了简单起见,我将其称为“全局” ' 版本)。该模块包含在每 15 分钟启动一次的大约 1000
我正在将一些网站从旧网络服务器迁移到新网络服务器。旧的网络服务器使用 Perl 5.8,新的网络服务器使用 Perl 5.28。两者之间的区别之一是在 5.8 上,脚本运行的目录默认包含在 @INC
我有一堆脚本需要按顺序运行它们,如下所示 foreach my (qw (script1.pl script2.pl script3.pl ){ my $script=File::Spec->cat
我是一名优秀的程序员,十分优秀!