• Publicidad

Conexión con DB2

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Conexión con DB2

Notapor piero66 » 2009-02-20 14:40 @653

Buenas tardes. Una duda... trato de conectarme a una base de datos

DB2 versión 8.3

pero no me deja conectarme... me manda el siguiente error

Código: Seleccionar todo
DBI connect('dsnContent','root',...) failed: [unixODBC][IBM]
[Controlador ODBC de iSeries Access]Anomalía de enlace de comunicaciones.
comm rc=10061 - CWBCO1049 - No se ha iniciado la aplicación  del servidor iSeries
(SQL-08004)


No sé si me falta bajar alguna librería aparte, porque esa me está tronando, y no me deja conectarme. Mi archivo es el siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use DBI;

$dbh = DBI->connect('dbi:ODBC:dsnContent','usuario','contrasena')or MiError("DBI::errstr");
$sth = $dbh->prepare("select ITEMID, DUREQUISITO from ICMADMIN.DUGRUPODGU001 where dufolio='7-2267'") or MiError("DBI::errst$)

$sth->execute or MiError("
DBI::errstr");
while ($rs = $sth->fetchrow_hashref) {
    foreach $campo (keys %$rs) {
        print "
$campo : $$rs{$campo}\n";
    }
    print "
-----------------------------------------------\n";
    $x = <STDIN>;
}

sub MiError {
    my $msg = shift;
    print "
error = $msg";
    exit 0;
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Publicidad

Notapor explorer » 2009-02-20 17:42 @779

Según veo por ahí, podría ser que no te has conectado al puerto correcto.

http://www.nntp.perl.org/group/perl.dbi ... 30338.html
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 piero66 » 2009-02-23 16:06 @712

Gracias, ya chequé la liga que me pasaste, pero ahí en la configuración del ODBC de mi servidor ¡¡ no pide configuración del puerto !!...

Código: Seleccionar todo
[dsnContent]
Description     = iSeries Access for Linux ODBC Driver 64-bit
Driver      = iSeries Access ODBC Driver 64-bit
System      = 192.1.1.102
UserID      = users
Password        = *********
Naming      = 0
DefaultLibraries        =
Database        = ICMSDSDB
ConnectionType      = 0
CommitMode      = 0
ExtendedDynamic     = 0
DefaultPkgLibrary       =
DefaultPackage      =
AllowDataCompression        = 0
MaxFieldLength      = 32
BlockFetch      = 1
BlockSizeKB     = 128
ExtendedColInfo     = 0
LibraryView     = 0
AllowUnsupportedChar        = 0
ForceTranslation        = 0
Trace       = 0


Estuve buscando y creo que esta librería no es la adecuada para conectarme a una BD2 de IBM para content managment... pero hasta ahorita no he encontrado la correcta. También estuve instalando la librería DBD::DB2 para tener otra alternativa pero la verdad me genera muchos errores... no sé si puedas ayudarme a instalar esta librería... como verás estoy bastante verde para instalar librerías ni desde Shell, ni bajando la librería puedo instalarlo...

Me marca el siguiente error... cuando ejecuto
Código: Seleccionar todo
[root@linuxdu DBD-DB2-1.6]# make

make[1]: se ingresa al directorio `/home/inst1/sqllib/DBD-DB2-1.6/Constants'
gcc -c  -I"/home/inst1/sqllib/include" -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O0 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic   -DVERSION=\"1.6\" -DXS_VERSION=\"1.6\" -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE"   Constants.c
Constants.xs:16:20: error: sqlcli.h: No existe el fichero o el directorio
Constants.xs:18:21: error: sqlcli1.h: No existe el fichero o el directorio
make[1]: *** [Constants.o] Error 1
make[1]: se sale del directorio `/home/inst1/sqllib/DBD-DB2-1.6/Constants'
make: *** [subdirs] Error 2



¡¡ Ojalá me puedas ayudar...!! ¡¡ Gracias !!
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Notapor explorer » 2009-02-23 16:29 @728

¿Y con
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
cpan DBD::DB2
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
?

Bueno, no creo que te lo permita hacer de esa manera. Yo lo buscaría entre los paquetes de software de la distribución UNIX que estés usando.

Y si no, en la web de IBM.

Otro enlace, pero ya del uso: Perl programming with DB2 Universal Database.
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 piero66 » 2009-02-23 16:54 @745

Sí, gracias, ya chequé la liga esa; me será útil cuando pueda conectarme.

Desde CPAN me marca errores también...

De hecho, cuando bajo la librería y la estoy instalando de forma manual he avanzado más que en la instalación desde el CPAN, pues checo un archivo de instalación pero la verdad no sé si haga algo mal... lo más seguro es que sí... según ud., mi buen amigo explorer, ¿qué es lo que se debe de hacer para instalarlo correctamente?

El archivo tiene las siguientes instrucciones:

Código: Seleccionar todo
Common Build Errors:
--------------------
When compiling the DBD::DB2 driver and you see errors such
as the following:

sqlcli.h: No such file or directory
sqlc1l1.h: No such file or directory
sqlext.h: No such file or directory

This usually means that you are not in a properly configured
DB2 client shell. A typical case would be that you installed
DB2 to /home/inst1/sqllib and now you are using root to install
DBD::DB2.  The root id does not have the DB2 Client configured.
The fix for this scenario is as follows:

export DB2_HOME=/home/inst1/sqllib
perl Makefile.PL     (This will create the proper INC)

Then check the Makefile created to verify that the INC is correct.
For example:

INC = -I"/home/inst1/sqllib/include" -I"/usr/lib/perl5/site_perl
/5.8.0/i386-linux-thread-multi/auto/DBI" -I"/usr/lib/perl5/vendor_
perl/5.8.0/i386-linux-thread-multi/auto/DBI"

The headers files are located under /home/inst1/sqllib/include.


Special Notes re: Linux
-----------------------
Some versions of gcc have problems with optimization.  This
can cause Contants.C to take a long time to compile.  Please
be patient, it will probably finish eventually.  If it
doesn't, or the resulting build causes a 'Total
Environment allocation failure!' error when you try to
connect, you will have to edit the Makefile (after running
perl Makefile.PL) and change:

        OPTIMIZE = -O2
          to
        OPTIMIZE = -O0


If during the "make test" step, you get the following error:

"/auto/DBD/DB2/Constants/SQL_PARAM_I.al" cannot be located

you will need to remove some constants from Constants.pm or
Constants.C file. This file is located under the Constants
directory.  The Constants.pm is there to allow you to use
constants inside your perl script. You can remove all the
constants that you don't need.


Yo sé que es mucho pedir, pero la verdad ya llevo como 3 días clavado en esto y ya me desesperé... :oops: , ¡¡porque no avanzo en mis funciones!!

De antemano, ¡¡puedas o no ayudarme!!... ¡¡¡ gracias !!!
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Notapor explorer » 2009-02-23 17:12 @758

El mensaje de error que te sale (de que no puede encontrar los ficheros cabecera .h) es lo que se comenta en la primera parte del texto que has publicado.

Y la solución es la que te comenta: ejecutar desde el shell
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
export DB2_HOME=/home/inst1/sqllib
perl Makefile.PL
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

(es decir, DB2_HOME se pone al valor del directorio donde reside la librería sql). Y luego ejecutar el Makefile.PL que crea el fichero Makefile.

Y a continuación, dice que se compruebe, dentro del Makefile, el valor de la variable INC. Para que todo vaya bien, debe aparecer un directorio del estilo /home/inst1/sqllib/include, pues dice que es allí donde residen los ficheros cabecera (lo puedes comprobar mirando antes dentro de ese directorio).

Si todo va bien, solo queda ejecutar el make, make test, make install.
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 explorer » 2009-02-23 17:17 @762

¿En qué sistema operativo estás?
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 piero66 » 2009-02-24 09:31 @438

Mi sistema operativo es CentOS v5. De hecho, esto que me mencionas sí lo hice...
y dentro del archivo Makefile aparece esta línea:

Código: Seleccionar todo
INC = -I"/home/inst1/sqllib/include" -I"/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBI" -I"/usr/lib64/p$


pero después, al ejecutar make, es donde tengo problemas y el mensaje que aparece es este:

Código: Seleccionar todo
[root@linuxdu DBD-DB2-1.6]# make
make[1]: se ingresa al directorio `/home/inst1/sqllib/DBD-DB2-1.6/Constants'
gcc -c  -I"/home/inst1/sqllib/include" -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O0 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic   -DVERSION=\"1.6\" -DXS_VERSION=\"1.6\" -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE"   Constants.c
Constants.xs:16:20: error: sqlcli.h: No existe el fichero o el directorio
Constants.xs:18:21: error: sqlcli1.h: No existe el fichero o el directorio
make[1]: *** [Constants.o] Error 1
make[1]: se sale del directorio `/home/inst1/sqllib/DBD-DB2-1.6/Constants'
make: *** [subdirs] Error 2


¡¡y pues los comandos make test y make install ya no los ejecuto!!

Ahora yo estoy instalando mi librería desde esta ubicación: /home/inst1/sqllib/DBD-DB2-1.6/
No sé si eso es un problema y la tengo que ubicar en una diferente ubicación u otra cosa porque tu mencionas esto:

es decir, DB2_HOME se pone al valor del directorio donde reside la librería sql).

¿¿Se supone que yo debo tener una librería SQL en esta ubicación??, porque esa ruta no existía, ¡¡y la tuve que crear... !! :oops:

¡¡¡Gracias por la atención!!!
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Notapor explorer » 2009-02-24 10:50 @493

Pero... antes de ejecutar el make, ¿has hecho el export?

Debes crear una variable DB2_HOME al lugar donde has colocado los ficheros del DB2.
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 piero66 » 2009-02-24 11:00 @500

Sí, hacia esto...

1.- export DB2_HOME=/home/inst1/sqllib
2.- perl Makefile.PL --> (sin crear la ruta, este archivo me marcaba error en la instalación)
3.- make -->(sí tengo la ruta, aquí empieza a marcar errores la instalación)

Tal cual esos pasos... como te digo hice varias pruebas al inicio y como esa ruta no existía, la creé, después ejecutaba de nuevo las instrucciones en ese orden que te menciono... no sé si tenga que instalar una librería que contenga el archivo sqlcli.h y este a su vez, me crea automáticamente esta ruta... /home/inst1/sqllib
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Siguiente

Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado