perl - 关于perl dbd oracle

标签 perl

我有两个疑问

  1. 当我运行下面的 perl 脚本时,我收到以下错误

无法连接:ORA-12154:TNS:无法解析指定的连接标识符(DBD 错误:OCIServerAttach)

我无法修改 tnsnames.ora,因为我没有访问权限。我知道 tnsnames.ora 没有 testdb 数据库的条目。有没有解决方法。我认为我正在使用 IP 地址访问远程 Solaris 计算机中的数据库,因此不需要本地 Solaris 计算机 tnsnames.ora 中的条目。

$platform = "Oracle";
$database = "testdb";
$host = "testdb.dev.test.com.au";
$port = "2000";
$user = "scott";
$pw = "tiger";


$dsn = "dbi:$platform:$database:$host:3306";
print "$dsn" . "\n";

# PERL DBI CONNECT (RENAMED HANDLE)
my $dbstore = DBI->connect($dsn, $user, $pw) or die "Unable to connect: $DBI::errstr\n";

2 我对DBD模块的理解是即使oracle没有安装在本地机器上DBD模块也应该工作。但我注意到在安装时它使用了 oracle 客户端库。因此,如果我安装 DBD::Sybase,我是否需要在本地计算机上安装 sysbase。既然我正在访问远程服务器数据库,为什么需要本地安装 oracle/sybase 库?

最佳答案

您的 dsn 语法错误。尝试使其如下所示:

$dsn = "dbi:$platform:host=$host;sid=$sid;port=$port";

以上语法在我使用 DBD::Oracle 的许多情况下都对我有用。

关于perl - 关于perl dbd oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14208937/

相关文章:

regex - Unix/Linux/FreeBSD 使用 Perl Regex 查找命令

regex - Windows 中的 Perl 单行代码

perl - 如何测试使用 File::ShareDir 的模块?

regex - Perl:从当前位置替换模式直到行尾

perl - Perl v5.10.1 是否有内存泄漏或如何解释 valgrind

perl - 如何在单行上打印某些起始行和终止行之间的所有内容?

perl - Perl 的打印功能的副作用

perl - 在调试器中设置任意断点

php - PHP 中的 scandir() 太慢了

perl - Perl DBIx::Class 能否覆盖从数据库中检索列的方式?