• Publicidad

Como conecto un servidor web con uno de bases de datos

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

Como conecto un servidor web con uno de bases de datos

Notapor Juan JOse » 2006-09-21 14:46 @657

Saludos:

Soy nuevo utilizando perl y tengo un problema, estoy haciendo una aplicacion web y tengo un servidor web y tengo otra maquina donde tengo bases de datos, ¿como puedo desde la maquina donde estara la pag. web hacer consultas a la maquina donde estan las bases de datos?

He podido desplegar consultas si la base de datos y el servidor web estan en la misma maquina, pero ese no es mi caso.

utilizo el siguiente codigo para hacer pruebas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
#
use DBI;
my $dbh = DBI->connect("dbi:Informix:b_xxxx:168.xxx.xxx.x","usuario","password")
    or die "Can't connect to Informix";
my $prep = "select * from txxxx";
my $sth = $dbh->prepare($prep);
$sth->execute( );
$dbh->disconnect;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4



Y me sale el siguiente error:

Código: Seleccionar todo
DBI connect('b_xxxx:168.xxx.xxx.1','usuario',....) failed: SQL: -354: incorrect database or cursor name format


Ese codigo lo ejecuto en la maquina donde estara el servidor web, he cambiado el hostname quitando la direccion IP y poniendo el nombre del host de la maquina a la q conecto, en las dos maquinas tengo instalado perl y DBI/DBD , ojala pudieran ayudarme, se los agradecere mucho.
Juan JOse
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2006-09-21 14:21 @640
Ubicación: Desarrollo

Publicidad

Notapor AkonD » 2006-09-21 15:41 @695

Tienes configurado el servidor mysqld para que acepte conexiones remotas? creo que por defecto solo acepta localhost..

El error que te sale creo que es pq no selecionas la base de datos correctamente..
AkonD
Perlero nuevo
Perlero nuevo
 
Mensajes: 50
Registrado: 2005-10-06 06:36 @316
Ubicación: España

Notapor explorer » 2006-09-21 19:49 @867

En el dbi debes indicar el host al que te vas a conectar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Juan JOse » 2006-09-22 13:45 @614

saludos:

en el dbi pongo el host al q me quiero conectar, pongo su direccion IP de la maquina, aunq creo q el problema se refiere como lo dice AkonD, a que mi servidor de bases de datos q utiliza Informix no esta configurado para aceptar busquedas remotas, estoy investigando como configurarlo, no se si uds sepan donde hacerlo?

gracias.
Juan JOse
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2006-09-21 14:21 @640
Ubicación: Desarrollo

Notapor explorer » 2006-09-22 15:01 @667

El primer resultado en Google me ha sacado este thread:
http://www.linux.org.ve/pipermail/l-des ... 00347.html

A ver si te da pistas...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Juan JOse » 2006-09-22 17:04 @753

gracias, en el link que pones encontre una explicacion de como solucionar el problema, en seguida la pruebo y comento el resultado, nuevamente gracias.
Juan JOse
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2006-09-21 14:21 @640
Ubicación: Desarrollo

Notapor macgregor » 2006-09-29 05:21 @265

Código: Seleccionar todo
#!/usr/bin/perl -w
#
use DBI;
my $dbh = DBI->connect("dbi:Informix:b_xxxx:168.xxx.xxx.x","usuario","password")
or die "Can't connect to Informix";
my $prep = "select * from txxxx";
my $sth = $dbh->prepare($prep);
$sth->execute( );
$dbh->disconnect;



Actualmente estoy ejecutando mis cgi's en un servidor Linux que envia las peticiones a otro servidor Windows que se encuentra en una red privada donde esta la Base de Datos Oracle.

Código: Seleccionar todo
my $IP="666.666.666.666";  # la ip del servidor donde está la DB

$gestor_datos->{Apuntador} = DBI->connect("dbi:Oracle:(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = $IP)(PORT =
1521)))(CONNECT_DATA =
(SERVICE_NAME=$gestor_datos->{Nombre})))","$gestor_datos->{Usuario}",
"$gestor_datos->{Password}"); 


Fijate que es lo mismo que intentas hacer tú, usamos la misma librería para conectar, pero distinto driver.

(el puerto de conexión seguro que no es el mismo! el 1521 es el que usa oracle por defecto)

Lo de $gestor_datos->{algo} lo debes cambiar por tus variables, esto viene de unos módulos que cree para conectar y lanzar consultas.
Estos módulos los puedes consultar en este foro, en el apartado de MÓDULOS.

Se crearon pensando en Oracle, pero ya ves que en el fondo usan DBI igual que tú.

Si te interesan y necesitas algún ejemplo solo tienes que postear aqui :)

Un saludo
MACGREGOR [TM]
Avatar de Usuario
macgregor
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2004-12-09 07:32 @355
Ubicación: españa

Hace la conexion pero no muestra la informacion en la WEB

Notapor Juan JOse » 2006-10-09 12:05 @545

Saludos:

Tengo ahora otro proplema con el mismo proyecto, ojala puedan ayudarme nuevamente, tengo el siguiente codigo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#****************************************************#
#! /usr/bin/perl -w
use CGI;
use DBI;

$q = new CGI;

# mandando servidor los encabezados de la pagina html                          
print $q->header;                                                              
print $q->start_html(-title=>"Centros de Consulta", -bgcolor=>"#3333CC", -text=>"#FFFFFF");
print "<center><H2>CONSULTA DE SUELDO BASE</H2></center>";
print $q->hr();                                                                
#creando una form o ventana                                                    
print $q->startform();                                                        
print "<font color=\"white\">";                                                
print "RFC del empleado:  ";                                            
print $q->textfield('RFC','',13);                                            
print $q->hr();
# creando un submit button                                                      
print $q->submit('BUSCAR');                                                  
# cerrando la forma                                                            
print $q->endform();                                                            

#se preciona el boton                                                          
#if ( $q->param('BUSCAR')) {  
#lee el textfeld
$v_rfc = $q->('RFC');

# creando conexion
my $dbh = DBI->connect('dbi:Informix:nomina@basedatos','pato','pato')or die print "No hay conexion con la base<br>";

#consulta el numero de registros existentes para ese empleado
my $prep = "select count(*) from sueldos where rfc= ? ";
my $sth = $dbh->prepare($prep);
$sth->execute($v_rfc );
my ($n_registros) = $sth->fetchrow_array();      
print "este es el numero $n_registros\n";                                                  
#Verifica si existe el empleado entonces
if($n_registros eq 0 ) {
#no existe
print "No existe ese registro<BR>";
$sth->finish;                                                                  
$dbh->disconnect();                                                            
print $q->hr();                                                                
print $q->end_html();
}#fi($n_registros ==0)      

#Existen registros para ese empleado
if($n_registros eq 1 ) {
#hace una nueva busqueda
$sth->finish;                                                                  
my $prep = "select empledo, puesto, qna, cheque from sueldos where rfc=? ";
my $sth = $dbh->prepare($prep);
$sth->execute($v_rfc );

#Cebeza de la tabla
print "<TABLE Border=10 CellPadding=5><TR>";
# construyendo los encabezados de la tabla                                      
print "<th bgcolor=Red>EMPLEADO</th>
       <th bgcolor=Red>PUESTO</th>
       <th bgcolor=Red>QUINCENA</th>           
       <th bgcolor=Red>SUELDO</th>                                            
       </TR>"
;

while ( my ($empleado, $puesto, $qna, $cheque)=$sth->fetchrow_array() ) {
#Construccion de la tabla para este usuario
# llena la tabla                                                              
print "<TR><TD>"."$empleado"."</TD><TD>"."$puesto"."</TD><TD>"."$qna"."</TD><TD>"."$cheque"."</TD><TD></TR>";    
};                                                                              
print "</TABLE>";

};#fin while
};#fin else
$sth->finish;                                                                  
$dbh->disconnect();                                                            
print $q->hr();                                          
print $q->end_html();
#};#fin if boton


##******************************************************
 
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

El problema q tengo es q si este programa se abre en el navegador, no ejecuta la conexion a la base de datos, sale el mensaje de q no se pudo conectar, y cuando lo corro desde la maquina, con "perl patito.pl" si hace la conexion y hace la tabla, lo despliega como corrida, ojala uds, sepan q sucede, ya le busque y no encuentro q pasa.

Gracias, ojala puedan ayudarme.
Juan JOse
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2006-09-21 14:21 @640
Ubicación: Desarrollo

Notapor explorer » 2006-10-09 15:49 @700

Al principio del programa, donde pone:

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

lo cambias por:
Código: Seleccionar todo
#!/usr/bin/perl -w
#****************************************************#


Atención al espacio en blanco...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2006-10-09 15:54 @704

explorer escribiste:Al principio del programa, donde pone:

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

lo cambias por:
Código: Seleccionar todo
#!/usr/bin/perl -w
#****************************************************#


Atención al espacio en blanco...

En UNIX es mejor esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/env perl
use warnings;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Ya que env conose el path de ejecución de Perl.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Siguiente

Volver a Bases de datos

¿Quién está conectado?

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