Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接到远程服务器时无法在perl中执行mysql查询_Mysql_Perl - Fatal编程技术网

连接到远程服务器时无法在perl中执行mysql查询

连接到远程服务器时无法在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 $

我已连接到一个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 $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
的第四个参数