• Publicidad

Error al consultar base de datos desde Perl

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

Error al consultar base de datos desde Perl

Notapor xoan » 2006-03-20 05:44 @280

Hola a todos. Tengo un pequeño problema que espero me podais ayudar a resolver.

Resulta que quiero hacer una página dinámica con Perl y estoy haciendo pruebas de conectividad con la base de datos. Para ello he diseñado el típico script "Hola Mundo" y lo he guardado en el directorio que tengo asignado para ejecutar mis scripts en Apache-perl.

Mi problema es el siguiente (os muestro el código de mi script):

Código: Seleccionar todo
#! /usr/bin/perl -w

use DBI;
print "Content-type: text/html \n\n";
print "<html><head><title>Resultados</title></head><body>";

$dbh = DBI->connect("dbi:Pg:database=db_proyecto");
$sth = $dbh->prepare('SELECT * FROM usuarios');
$sth->execute();

while ( @row = $sth->fetchrow_array )
{

print  "<b>$row[0]\t$row[1]</b>";

}

$sth->finish();
$dbh->disconnect;
print "</body></html>";
exit (1);


Como podeis ver se trata de una consulta muy sencilla pero al ejecutarlo desde el navegador me muestra la página en blanco. Reviso los log del servidor Apache pero no me muestra ningún error de ejecucón. Si me pudieseis echar un cable os lo agradecería porque estoy algo perdido la verdad. Gracias anticipadas :D
xoan
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2006-03-18 18:23 @807

Publicidad

Notapor kidd » 2006-03-20 09:45 @448

Hola:

Tu problema podría estár en que no te estás conectando a la base de datos correctamente, o que no se están leyendo bien los datos, o en varias cosas que podrían estár saliendo mal sin que te des cuenta. Es por ello que es muy importante que cuando hagas tus scripts siempre pongas revisiones de errores, por ejemplo, tu código lo podrías cambiar por algo así:

Código: Seleccionar todo
#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);
use DBI;



print "Content-type: text/html \n\n";
print "<html><head><title>Resultados</title></head><body>";

my $dbh = DBI->connect("dbi:Pg:database=db_proyecto", '', '',
                        {PrintError => 1, RaiseError => 1});

my $sth = $dbh->prepare('SELECT * FROM usuarios') or die("No se pudo preparar el query: " . $dbh->errstr);

$sth->execute() or die("No se pudo ejecutar el query: " . $sth->errstr);

    while ( my @row = $sth->fetchrow_array() ){

        print "<b>$row[0]\t$row[1]</b>";

    }

$sth->finish();
$dbh->disconnect or die("No me pude desconectar del DB: " . $dbh->errstr);

print "</body></html>";

exit (1);



Ahora tendrás un error en el caso de que falle alguna parte de la conexión con tu database. Prueba ejecutar el script a ver que error te muestra.


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor xoan » 2006-03-23 06:59 @332

Hola kidd muchas gracias por tu respuesta. Al final ya solucioné el problema. Tenías razón no estaba conectándome correctamente a la base de datos, sólo tube que añadir a la sentencia de conexión DBI el usuario y password del propietario de las tablas de la BD.

Muchas gracias por la ayuda! :D :D
xoan
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2006-03-18 18:23 @807


Volver a Bases de datos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados

cron