【问题标题】:Perl database connectionPerl 数据库连接
【发布时间】:2016-10-21 16:33:42
【问题描述】:

我是 perl 新手,我需要使用 DBI 连接数据库。我的代码如下:

use LWP::Simple;
use XML::Simple qw(:strict);
use Data::Dumper;
use DBI;
use Getopt::Long;
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
use IO::File;
use warnings;

 $dbh = DBI->connect("dbi:);


  if (!$dbh) {
    &logMsg(0, "$DBI::errstr");
    die;
  } else {&logMsg(0,"Connection to $dbName DB OK")}

我已经设置了值。有点像连接失败,但我没有收到任何错误。我还检查了日志文件,没有任何显示。我可以做些什么来检查错误?感谢任何 cmets 和帮助。

【问题讨论】:

  • 开启tracing。此外,启用RaiseError,这样您就不必在每次通话后手动检查错误。并且总是use strict;
  • 嗨@ThisSuitIsBlackNot,我用严格检查,仍然没有错误显示。

标签: perl dbi


【解决方案1】:

我找不到您的代码有任何问题,除非 logMsg 不起作用,但这是使用 DBI 的一种乏味方式。

与其检查 DBI 是否出现问题,不如将 DBI 设置为抛出错误。您可以使用RaiseError 来执行此操作。

my $dbh = DBI->connect(
              "dbi:ODBC:DSN=$dbName;Server=$dbHost",
              $dbUser, $dbPassword,
              { RaiseError => 1 }
          );

现在如果 DBI 出现故障,包括尝试连接,它会抛出错误并停止程序。这样可以避免每次使用数据库时都必须检查错误(您会忘记)。

【讨论】:

  • 您好,我在 Linux 中运行这些代码,我尝试了您的代码并添加了 RaiseError。没有任何变化和显示。
  • @Kyan 也许logMsg 不起作用?尝试故意输入错误的密码以使错误发生。还要检查你是否在运行你认为的代码。
  • 我认为 logMsg 正在工作,因为我在其他地方使用它,它会打印错误和消息。
  • @Kyan 你用 0 吗?日志级别是否设置正确?为什么假设?试试打印什么的。或者尝试将一些东西放入数据库中。
  • 是的,我尝试在数据库中放一些东西,但首先我需要连接到数据库。我在代码 $dbh 之前写并打印了一个单词,但是在代码 $dbh 之后我用来打印的另一个单词不起作用。
【解决方案2】:
 DBI;
 $dbh = DBI->connect('Your_Database_Name', 'user_id','Password');
 my $sth = $dbh->prepare ("select * from Table_name");
 $sth->execute();
 my @row_ary = $sth->hetshrow_array;
 foreach $item (@row_ary)
 {
 print "$item\n";
 }

【讨论】:

    猜你喜欢
    • 2015-11-27
    • 2013-04-21
    • 2015-09-07
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    相关资源
    最近更新 更多