I might be wrong - my info is well out of date... but on Linux, Perl built
multithreaded always segfaulted with unixODBC. I think this happened even if
unixODBC was built threaded (--enable-threads=yes - the default for unixODBC's
configure but I'd check your unixODBC was built threaded). I can't remember the
exact reason I'm afraid. isql is not threaded.

The data source not found message may be related to what DBD::ODBC does.
It first tries to call SQLDriverConnect with (in your case) emanuel-sbart and
when that fails calls SQLConnect(emanuel-sbart) - you can see this in your log.
You can get around this by making the DBI connect string
"DSN=emanuel-sbart;UID=db_user;PWD=db_pass;". See

http://www.easysoft.com/products/9999/faq_answer.phtml?ID=97&product=2002

but it won't make the segfault go away. I'd rebuild your Perl without threads if
I were you.

You can also see from your log that the SQLConnect succeeeds.

BTW, you did not mention which driver you were using.

Martin

Quoting Walter Obermiller <[EMAIL PROTECTED]>:

> Hi, all
> 
> I am experiencing a puzzling problem while trying to get 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-configuration
> blotches are not the problem.
> 
> 
> When I try to trivially connect 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) 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 = [walter][length = 6]
>       
        Authentication = [***][length = 3]
>               UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'
> 
> [ODBC][13206][SQLConnect.c][4069]
>               Exit:[SQL_SUCCESS]
> 
> 
> 
> 

Reply via email to