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] > > > >
