Martin,

this is because as I said in my last mail, the program
loses itself in an endless loop. The sql.log file (20 mb) for this
execution shows a couple of zillion messages complaining about the
adabas driver receiving an empty password....

The question is: what is tacking an empty UID=;PWD=; onto the end of the connection string, past the actual password and uid ?


--------------sql.log---------------------------------------------- [ODBC][25635][SQLAllocHandle.c][464] Exit:[SQL_SUCCESS] Output Handle = 0x82ced58 [ODBC][25635][SQLDriverConnect.c][666] Entry: Connection = 0x82ced58 Window Hdl = (nil) Str In = [DSN=emanuel-sbart;UID=walter;PWD=***;;UID=;PWD=;][length = 48] ^^^^^^^^^^-----------PROBLEM!! Str Out = 0xbfffe020 Str Out Max = 2048 Str Out Ptr = 0xbfffe01e Completion = 0 UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'

    DIAG [08001] [SOFTWARE AG][ODBCLIB A][ADABAS]Client
        unable to establish connection;-715 MISSING USERNAME OR
        PASSWORD FOR CONNECT.

     DIAG [08001] [SOFTWARE AG][ODBCLIB A][ADABAS]Client
        unable to establish connection;-715 MISSING USERNAME OR
        PASSWORD FOR CONNECT. <thousands of these messages deleted>
--------------sql.log---------------------------------------------------


I'm wondering whether it might be helpful to upgrade to the newest DBI and DBI::ODBC versions ?


        -walt




Martin J. Evans wrote:
I'd certainly use -w:
     Note: perl is running without the recommended perl -w option

There appears to be a bit missing from your trace. It should show
something like:

"Driver connect 'DSN=test;uid=Martin_Evans;pwd=easysoft;', '', 'xxxx'"

after

    dbih_setup_attrib(DBI::db=HASH(0x8248c00), HandleError,
        DBI::dr=HASH(0x81b08 44)) undef (not defined)
    the last line of your log file.

The 1.0.6 code has this print as:

if (DBIc_DEBUGIV(imp_dbh) >= 8)
 PerlIO_printf(DBIc_LOGPIO(imp_dbh), "Driver connect '%s',
 '%s', '%s'\n", dbname, uid, pwd);

and it is not appearing in your log.

BTW I only pointed out you can used "dbi:ODBC:DSN=x;UID=y;PWD=z;" because
you were mentioning the dsn not found and no default data source message.
Does the plain old DBI->connect('dbi:ODBC:fred', 'user', 'pass') work?

Martin
--
Martin J. Evans
Easysoft Ltd, UK
Development

On 22-Feb-2005 Walter Obermiller wrote:

Martin,

thanks for your patience.

Martin J. Evans wrote:

On 22-Feb-2005 Walter Obermiller wrote:


Martin,



Martin J. Evans wrote:


The DontDlClose was a suggestion to stop the seg faulting on exit.

When I said you can use DSN=emanuel-sbart;UID=*;PWD=*; I did of course mean
to
say you need to keep the 'dbi:ODBC' on the front. i.e.

'dbi:ODBC:DSN=emanuel-sbart;UID=*;PWD=*;'

blush :-)

I have fixed that now.


You haven't actually shown your DBI->connect now. With DBD::ODBC 1.13 if I
do:

here's what I do, and I think it is consistent with what you suggested:

  my $dbh
      = DBI->connect('dbi:ODBC:DSN=emanuel-sbart;UID=**;PWD=**;')
            || die "can't connect to $data_source: $DBI::errstr";
      $rc = $dbh->disconnect;
  exit();



perl -e 'use DBI;my $dbh =
DBI->connect("dbi:ODBC:DSN=test;UID=Martin_Evans;PWD=easysoft;");'
omitting the username/password arguments

OR

perl -e 'use DBI;my $dbh =
DBI->connect("dbi:ODBC:DSN=test;UID=Martin_Evans;PWD=easysoft;","","");'
specifying empty username/password arguments

it works fine:

Str In = [DSN=test;UID=Martin_Evans;PWD=********;][length = 39]

Looking at the code in DBD::ODBC it just passes the string straight through
if
it finds a DSN/UID/PWD. I compared DBD::ODBC 1.13 and 1.06 and I can't see
this
has changed but you never know. Running with:

DBI_TRACE=8=dbitrace.log perl myscript.pl

Thats what the tracefile looks like:

DBI 1.43-ithread default trace level set to 0x0/8 (pid 26246)
Note: perl is running without the recommended perl -w option
-> DBI->connect(dbi:ODBC:DSN=emanuel-sbart;UID=walter;PWD=foo;, , ****)
-> DBI->install_driver(ODBC) for linux perl=5.008005 pid=26246 ruid=100 euid=100
install_driver: DBD::ODBC version 1.06 loaded from /usr/lib/perl5/vendor_perl/5.8.5/i586-linux-thread-multi/DBD/ODBC.pm
New DBI::dr (for DBD::ODBC::dr, parent=, id=)
dbih_setup_handle(DBI::dr=HASH(0x8251c10)=>DBI::dr=HASH(0x82ce1a0), DBD::ODBC::dr, 0, Null!)
dbih_make_com(Null!, 0, DBD::ODBC::dr, 92, 0) thr#8151008
dbih_setup_attrib(DBI::dr=HASH(0x82ce1a0), Err, Null!) SCALAR(0x820c66c) (already defined)
dbih_setup_attrib(DBI::dr=HASH(0x82ce1a0), State, Null!) SCALAR(0x82b2520) (already defined)
dbih_setup_attrib(DBI::dr=HASH(0x82ce1a0), Errstr, Null!) SCALAR(0x82b24fc) (already defined)
dbih_setup_attrib(DBI::dr=HASH(0x82ce1a0), TraceLevel, Null!) 0 (already defined)
dbih_setup_attrib(DBI::dr=HASH(0x82ce1a0), FetchHashKeyName, Null!) 'NAME' (already defined)
<- install_driver= DBI::dr=HASH(0x8251c10)
!! warn: 0 CLEARED by call to default_user method
-> default_user in DBD::_::dr for DBD::ODBC::dr (DBI::dr=HASH(0x8251c10)~0x82ce1a0 undef undef HASH(0x821d77c)) thr#8151008
<- default_user= ( undef undef ) [2 items] at /usr/lib/perl5/vendor_perl/5.8.5/i586-linux-thread-multi/DBI.pm line 577 via odbc-emanuel-test.pl line 17
-> connect for DBD::ODBC::dr (DBI::dr=HASH(0x8251c10)~0x82ce1a0 'DSN=emanuel-sbart;UID=**;PWD=**;' undef **** HASH(0x82cf4d0)) thr#8151008
New DBI::db (for DBD::ODBC::db, parent=DBI::dr=HASH(0x82ce1a0), id=)
dbih_setup_handle(DBI::db=HASH(0x82ce164)=>DBI::db=HASH(0x82cf4c4), DBD::ODBC::db, 824edf8, Null!)
dbih_make_com(DBI::dr=HASH(0x82ce1a0), 82b5ce0, DBD::ODBC::db, 220, 0) thr#8151008
dbih_setup_attrib(DBI::db=HASH(0x82cf4c4), Err, DBI::dr=HASH(0x82ce1a0)) SCALAR(0x8256234) (already defined)
dbih_setup_attrib(DBI::db=HASH(0x82cf4c4), State, DBI::dr=HASH(0x82ce1a0)) SCALAR(0x8256294) (already defined)
dbih_setup_attrib(DBI::db=HASH(0x82cf4c4), Errstr, DBI::dr=HASH(0x82ce1a0)) SCALAR(0x8256264) (already defined)
dbih_setup_attrib(DBI::db=HASH(0x82cf4c4), TraceLevel, DBI::dr=HASH(0x82ce1a0)) 0 (already defined)
dbih_setup_attrib(DBI::db=HASH(0x82cf4c4), FetchHashKeyName, DBI::dr=HASH(0x82ce1a0)) 'NAME' (already defined)
dbih_setup_attrib(DBI::db=HASH(0x82cf4c4), HandleSetErr, DBI::dr=HASH(0x82ce1a0)) undef (not defined)
dbih_setup_attrib(DBI::db=HASH(0x82cf4c4), HandleError, DBI::dr=HASH(0x82ce1a0)) undef (not defined)
-------------






will provide a trace which should show what DBD::ODBC is using.

I'd still like to see your DBI->connect call though.

Thanks,

-walt


<snipped previous history - getting too long for me>

Reply via email to