Connection problem DBD::ODBC, unixODBC to remote ADABAS-D

From: Walter Obermiller (obermiller_at_schweizerbart.de)
Date: 02/21/05


To: dbi-users@perl.org
Date: Mon, 21 Feb 2005 12:19:05 +0100


I am experiencing an annoying problem getting an DBD::ODBC connection
(via unixODBC) working from a client machine A (Suse linux) to a an
ADABAS-D-11 database running on a remote machine (B, also Suse linux)

-------------------------- Machine A (client)
   Linux 2.6.8-2
   Perl : 5.008005 (i586-linux-thread-multi)
   OS : linux (2.6.8.1)
   DBI : 1.43
   DBD::Proxy : install_driver(Proxy) failed: Can't locate
RPC/PlClient.pm in @INC
   DBD::ODBC : 1.06
----------------------------------------------

Connections using isql (unixODBC) from machine A to machine B run
smoothly, hence I reckon, unixodbc and prima facie
odbc-misconfigurations are not the problem.

When I try to do a trivial connect (below) with DBD::ODBC to the very
same DSN that I could connect to using isql without a problem, I get a
segmentation fault.

----------trivial-connect----------------------
#!/usr/bin/perl
use DBI;
my $dbh = DBI->connect('dbi:ODBC:emanuel-sbart', '***','***') ||
                 die "can't connect to $data_source: $DBI::errstr";
$rc = $dbh->disconnect;
exit();
--------------------------------

and inspection of the sql.log (of unixodbc, full below) reveals the
error message:

---------------------
Message Text = [[unixODBC][Driver Manager]Data source name not found,
and no default driver specified]
[ODBC][13206][SQLError.c][424]
-------------------------------

Can anybody give me an idea which direction could be pursued to solve
this problem ?

What beats me is that isql can connect to my remote database, but an
dbd::odbc connection to the same DSN utterly fails.

Any hints welcome.

     -walter

--------------sql.log--------------------------------------------------------

[ODBC][13206][__handles.c][421]
                Exit:[SQL_SUCCESS]
                        Environment = 0x82ce928
[ODBC][13206][SQLSetEnvAttr.c][182]
                Entry:
                        Environment = 0x82ce928
                        Attribute = SQL_ATTR_ODBC_VERSION
                        Value = 0x3
                        StrLen = -6
[ODBC][13206][SQLSetEnvAttr.c][349]
                Exit:[SQL_SUCCESS]
[ODBC][13206][SQLAllocHandle.c][346]
                Entry:
                        Handle Type = 2
                        Input Handle = 0x82ce928
[ODBC][13206][SQLAllocHandle.c][464]
                Exit:[SQL_SUCCESS]
                        Output Handle = 0x82ceeb8
[ODBC][13206][SQLDriverConnect.c][666]
                Entry:
                        Connection = 0x82ceeb8
                        Window Hdl = (nil)
                        Str In = [emanuel-sbart][length = 13]
                        Str Out = 0xbfffdfc0
                        Str Out Max = 2048
                        Str Out Ptr = 0xbfffdfbe
                        Completion = 0
[ODBC][13206][SQLDriverConnect.c][998]Error: IM002
[ODBC][13206][SQLError.c][424]
                Entry:
                        Connection = 0x82ceeb8
                        SQLState = 0xbfffdf60
                        Native = 0xbfffdd58
                        Message Text = 0xbfffdd60
                        Buffer Length = 511
                        Text Len Ptr = 0xbfffdd5e
[ODBC][13206][SQLError.c][461]
                Exit:[SQL_SUCCESS]
                        SQLState = IM002
                        Native = 0xbfffdd58 -> 0
                        Message Text = [[unixODBC][Driver Manager]Data source name not found,
and no default driver specified]
[ODBC][13206][SQLError.c][424]
                Entry:
                        Connection = 0x82ceeb8
                        SQLState = 0xbfffdf60
                        Native = 0xbfffdd58
                        Message Text = 0xbfffdd60
                        Buffer Length = 511
                        Text Len Ptr = 0xbfffdd5e
[ODBC][13206][SQLError.c][461]
                Exit:[SQL_NO_DATA]
[ODBC][13206][SQLConnect.c][3495]
                Entry:
                        Connection = 0x82ceeb8
                        Server Name = [emanuel-sbart][length = 13]
                        User Name = [***][length = 6]
                        Authentication = [*****][length = 12]
                UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'

[ODBC][13206][SQLConnect.c][4069]
                Exit:[SQL_SUCCESS]

-- 
Walt Obermiller	E. Schweizerbart'sche Verlagsbuchhandlung
		(Nägele u. Obermiller)
		Science Publishers
		Johannesstr. 3A
		D-70176 Stuttgart
		Germany
		Tel. +49-711-3514560 FAX +49-711-351456-99


Relevant Pages

  • Problem with DBD::ODBC (via unixODBC) connection to remote ADABAS-11 database
    ... Connections using isql (unixODBC) from machine A to machine B run ... dbd::odbc connection to the same DSN utterly fails. ... I am experiencing a puzzling problem getting an DBD::ODBC connection working from a client machine A (Suse linux) to a an ADABAS-D-11 ...
    (perl.dbi.users)
  • [ANN] PyODB version 0.6 released
    ... I would like to announce version 0.6 of PyODB a Python unixODBC API binding. ... This release contains improved connection handling, fetch() now takes ...
    (comp.lang.python.announce)