[caracas-pm] Consulta a Informix mediante Perl DBI
Alexis Arnal
aarnal at me.gov.ve
Fri Sep 3 17:10:57 CDT 2004
Gracias, por la ayuda.
Ya pude conectarme a la base de datos Informix, sin embargo ahora me
surgió un problema al realizar una consulta.
A continuación les muestro el trozo de código conflictivo a ver si
alguien me ayuda a detectar la falla.
#----------------------------------------
if ($dbh=DBI->connect($driver,$user,$password)){
print "*** Conectado ***\n";
$statement=$dbh->prepare("SELECT nombre from tpersona where
cedula='12345678'")or die"\nError al preparar la operación\n";
$statement->execute or die "\nError al ejecutar la operación";
while (( $cedula,$nombre)=$statement->fetchrow_array){
print " $cedula|$nombre|\n";
}
}else{
print "*** Error en la conexión ***\n";
}
#------------------------------------------
El problema se presenta en la línea donde se hace el prepare
al ejecutarlo me muestra lo siguiente:
*** Conectado a la base de datos ***
Error al preparar la operación
Otro problema es que al parecer no valida el usuario y el password, ya
que los cambie arbitrariamente y se seguía conectándose.
Estoy leyendo toda la documentación de DBD::Informix a ver si puedo
encontrar la falla.
Atte.
Ing Alexis Arnal
Caracas-Venezuela
El jue, 02-09-2004 a las 13:56, Ernesto Hernandez-Novich escribió:
> On Wed, 1 Sep 2004, Alexis Arnal wrote:
> > Saludos, estoy teniendo problemas al tratar de conectarme a una base de
> > datos Informix con Perl. Ya instale el SDK de Informix y pude instalar
> > el DBD::Informix y aparentemente todo salió bien, sin embargo cuando
> > corro el script de prueba me manda el siguiente error:
> >
> > ---------------------------------------------------------------------
> > DBI connect('dbname=drh;host='xx01';port='1234'','yo',...) failed: SQL:
> > -354: Incorrect database or cursor name format. at ./conexperl.pl
> > Error en la conexión
> > ------------------------------------------------------------------
> > Busque la descripción del error y me mostró lo siguiente:
> >
> > [root at m1344 ejemploperl]# finderr -354
> > -354 Incorrect database or cursor name format.
> >
> > This statement contains the name of a database or a cursor in some
> > invalid
> > format. If the statement is part of a program, the name might have been
> > passed in a host variable.
>
> > $driver="dbi:Informix:dbname=$basedatos;host='xxx01';port='1234'";
>
> La sintaxis del connect es incorrecta. El DBD::Informix no funciona
> con dbname, host ni port.
>
> Si la base de datos 'foo' es local (misma máquina en la que corre el script),
> basta poner el nombre de la base de datos.
>
> dbi:Informix:foo
>
> Si la base de datos 'foo' es remota (en la máquina 'bar', diferente a la
> que corre el script), entonces la base de datos se indica como
>
> dbi:Informix:foo at bar
>
> y 'bar' debe haber sido ingresada en el archivo sqlhosts del cliente
> Informix en la máquina local.
>
> Si la base de datos 'foo' es local _y_ está en Standard Engine (¡oh
> cielos! ¡actualicen!), se coloca el camino de acceso en el sistema
> de archivos.
>
> dbi:Informix:/path/to/db/foo
>
> Revisa el manual de DBD::Informix para más detalles, y consulta a tu
> experto Informix local para configurar el sqlhost y los permisos de
> acceso en la máquina remota.
More information about the caracas-pm
mailing list