2013-11-21 4 views
2

Perl의 원격 서버에서 호스트 된 하나의 MySQL 데이터베이스에 연결했습니다. 이제 Perl 명령 줄을 사용하여 subject.pl 파일의 테이블에서 select 문을 실행하려고합니다. 이 코드는이 DBI::db=HASH(0x1ca7884) 같은 결과를주고, 내가 라인 $sth->execute() or die "Unable to execute".$sth->errstr;원격 서버에 연결하는 동안 perl에서 mysql 쿼리를 실행할 수 없습니다.

오류 메시지가 Unable to execute at D:\Demo\perl_demo\subject.pl line 24.

이다에서 오류를 얻고있다하지만은 $ DBH 변수를 인쇄하고 때

#!/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(); 

입니다. 그래서 나는 연결이 적절하게 수립되고 있다고 생각합니다.

Perl 스크립팅에 완전히 새로운이 문제를 해결하는 데 도움을주십시오. prepare에 오류

+1

당신은 $ dbh-의 반환 값> 준비 ($의 SQL)을 확인 했습니까? –

+0

당신은 분명히 그렇지 않으면 연결할 때 죽을 것입니다 ('connect .. or die ..') –

+0

예 Frank, $ dbh-> prepare ($ sql)의 반환 값을 확인했습니다. 그'DBI :: db = HASH (0x1ca74f4)' –

답변

1

확인,

my $sth = $dbh->prepare($sql) or die $dbh->errstr; 
+0

당신의 코드에 pitting으로 확인했습니다. 하지만 그 어떤 오류 던지지 않습니다. $ sth 변수를 출력 할 때,'$ sth-> execute() 나 die $ sth-> errstr;가'$ sth-> errstr;과 같이''DBI :: db = HASH (0x1ca74f4)' –

+0

@KanhuCharanSahu와 같은 결과를주는 것은 이상합니다. 실제 오류 메시지를보고 하시겠습니까? –

+0

원격 데이터베이스 때문입니까? –

관련 문제