在Perl脚本中建立DB连接时出错?
我正在使用perl 5.24。我正在努力学习Perl 我编写了一个简单的Perl代码来连接数据库。但给出了错误的陈述在Perl脚本中建立DB连接时出错?,perl,dbi,sqlanywhere,dbd,Perl,Dbi,Sqlanywhere,Dbd,我正在使用perl 5.24。我正在努力学习Perl 我编写了一个简单的Perl代码来连接数据库。但给出了错误的陈述 DBI connect('database=vms','DBA',…)在simpleperl.pl第13行失败:(无错误字符串)。 代码是 #!/usr/bin/perl use DBI; use DBD::SQLAnywhere; my $driver = "SQLAnywhere"; my $database = "vms"; my $dsn = "DBI:$drive
DBI connect('database=vms','DBA',…)在simpleperl.pl第13行失败:(无错误字符串)。
代码是
#!/usr/bin/perl
use DBI;
use DBD::SQLAnywhere;
my $driver = "SQLAnywhere";
my $database = "vms";
my $dsn = "DBI:$driver:database=$database";
my $userid = "DBA";
my $password = "admin";
my $dbh = DBI->connect($dsn, $userid, $password,{RaiseError => 1}) or die ("died connection:$DBI::errstr");
if($dbh)
{
print "Connection Established";
}
有人能指出这里可能存在的问题吗?请注意文档中的以下内容:
$dbh=DBI->connect('DBI:SQLAnywhere:ENG=demo',$userid,$passwd)代码>
还应注意以下事项:
- 始终使用
严格
和警告
- 您不需要
使用DBD::SQLAnywhere代码>DBI
将根据您在连接字符串中指定的内容选择驱动程序
- 您在连接选项中指定了
{RaiseError=>1}
。这意味着,不需要或die
<如果connect
失败,code>DBI
将发出嘎嘎声
AutoCommit=>0
与该RaiseError=>1
配合使用if($dbh)
。除非connect
成功,否则您无法到达那里DBI->trace( 5 );
在通话前连接
并用跟踪信息更新您的问题。另请参见。注意文档中的以下内容:
$dbh=DBI->connect('DBI:SQLAnywhere:ENG=demo',$userid,$passwd)代码>
还应注意以下事项:
- 始终使用
严格
和警告
- 您不需要
使用DBD::SQLAnywhere代码>DBI
将根据您在连接字符串中指定的内容选择驱动程序
- 您在连接选项中指定了
{RaiseError=>1}
。这意味着,不需要或die
<如果connect
失败,code>DBI
将发出嘎嘎声
AutoCommit=>0
与该RaiseError=>1
配合使用if($dbh)
。除非connect
成功,否则您无法到达那里DBI->trace( 5 );
在
通话前连接
并用跟踪信息更新您的问题。另请参见。首次使用严格使用代码>和使用警告代码>因为这些将捕获大量错误。不要直接使用DBD::
DBI
将为您处理驱动程序。我认为database=$database
必须是ENG=$database
。请参阅源代码中的te注释:#如果dbname的开头看起来不像#连接字符串参数('label=value;'format),则#'ENG='是前缀代码>相关:首先使用严格使用代码>和使用警告代码>因为这些将捕获大量错误。不要直接使用DBD::
DBI
将为您处理驱动程序。我认为database=$database
必须是ENG=$database
。请参阅源代码中的te注释:#如果dbname的开头看起来不像#连接字符串参数('label=value;'format),则#'ENG='是前缀代码>相关:我运行了您建议的代码。它仍然在另一个simpleperl.pl行12处给出相同的错误DBI connect('ENG=vms','DBA',…)failed:(无错误字符串)。我假设确实存在一个名为vms
的数据库,您可以通过其他方式连接到该数据库。这个假设正确吗?是的,有一个叫做vms的数据库。我运行了你建议的代码。它仍然在另一个simpleperl.pl行12处给出相同的错误DBI connect('ENG=vms','DBA',…)failed:(无错误字符串)。我假设确实存在一个名为vms
的数据库,您可以通过其他方式连接到该数据库。这个假设正确吗?是的,有一个叫做vms的数据库。