连接到远程服务器时无法在perl中执行mysql查询
我已连接到一个MySQL数据库,该数据库已用Perl托管在远程服务器上。现在,我尝试使用Perl命令行在subject.pl文件中的表上执行select语句。代码是连接到远程服务器时无法在perl中执行mysql查询,mysql,perl,Mysql,Perl,我已连接到一个MySQL数据库,该数据库已用Perl托管在远程服务器上。现在,我尝试使用Perl命令行在subject.pl文件中的表上执行select语句。代码是 #!/usr/bin/perl use DBI; use strict; # Connected to mysql audit database in dev server my $dsn = 'DBI:mysql:Driver={mysql}'; my $host = 'dev-mysql.learn.local'; my $
#!/usr/bin/perl
use DBI;
use strict;
# Connected to mysql audit database in dev server
my $dsn = 'DBI:mysql:Driver={mysql}';
my $host = 'dev-mysql.learn.local';
my $database = 'subject';
my $user = 'testUser';
my $auth = 'testPassword';
my $dbh = DBI->connect("$dsn;host=$host;Database=$database",$user,$auth) or die "Database connection not made: $DBI::errstr";
# Prepare query
my $sql = "SELECT
subject_id
,subject_value
FROM
subject";
my $sth = $dbh->prepare($sql);
#Execute the statement
$sth->execute() or die "Unable to execute".$sth->errstr;
while (my @row = $sth->fetchrow_array()) {
my ($subject_id, $subject_value ) = @row;
print "$subject_id,$subject_value,$subject_db_field\n";
}
$sth->finish();
我在第$sth->execute()行出错,或者死在“无法执行”。$sth->errstr代码>
错误消息无法在D:\Demo\perl\u Demo\subject.pl第24行执行。
但是当我打印$dbh变量时,它给出的结果类似于DBI::db=HASH(0x1ca7884)
。所以我想这种联系建立得很好
请帮助我解决这个问题,因为我对Perl脚本是全新的。检查prepare
上的错误
my $sth = $dbh->prepare($sql) or die $dbh->errstr;
你检查过$dbh->prepare($sql)的返回值吗?你肯定有连接,否则它会在connect(connect..或die..
)上死掉。是的,弗兰克,我检查过$dbh->prepare($sql)的返回值。它的给出DBI::db=HASH(0x1ca74f4)
我已经检查了你的代码。但它没有抛出任何错误。当我打印$sth变量时,其给出的结果类似于DBI::db=HASH(0x1ca74f4)
@KanhuCharanSahu奇怪的是$sth->execute()或die$sth->errstr
没有报告实际的错误消息?是因为远程数据库吗?@KanhuCharanSahu否,DBI
在出现故障时应该总是有错误消息。@KanhuCharanSahu您可以将{RaiseError=>1}
设置为connect
的第四个参数