Martin, Jeff et al.
  You guys nailed it I think.  I think in my previous
working set up I had I must have chosen 
/usr/local/easysoft/oob/client as my ODBCHOME

For this failed build of ODBC 0.38 I had been choosing

/usr/local/easysoft/unixODBC as my ODBCHOME

I switched back to 
/usr/local/easysoft/oob/client as my ODBCHOME

and all is well again.

So, if I understand from an offline with Jeff, the
/usr/local/easysoft/oob/client 
is the ODBC driver itself and:
/usr/local/easysoft/unixODBC is ODBC driver manager.  

I don't understand why but the driver manager doesn't
seem to be working correctly for me.  If I find out
I'll let you all know.

Thanks so much for everyone's help.  The DBI users
list is a good community.

Ciao,


--- [EMAIL PROTECTED] wrote:
> On 21-Feb-2002 Tim Harsch wrote:
> > Hi all,
> >   Here's more info on the ODBC not connecting
> problem.
> >  It doesn't seem to provide much insight, maybe
> you'll
> > have better luck though ...
> > 
> > -----
> > Here's a DBI trace of a simple connect attempt:
> > 
> >     DBI 1.21-nothread dispatch trace level set to
> 2
> >     Note: perl is running without the recommended
> perl
> > -w option
> >     -> DBI->connect(DBI:ODBC:HOMER, omodify, ****,
> )
> >     -> DBI->install_driver(ODBC) for linux
> perl=5.006
> > pid=23194 ruid=0 euid=0
> >        install_driver: DBD::ODBC version 0.38
> loaded
> > from
> >
>
/usr/lib/perl5/site_perl/5.6.0/i386-linux/DBD/ODBC.pm
> >     <- install_driver= DBI::dr=HASH(0x8182b78)
> >     -> connect for DBD::ODBC::dr
> > (DBI::dr=HASH(0x8182b78)~0x8158388 'HOMER'
> 'omodify'
> > **** HASH(0x815ec18))
> > Driver connect 'HOMER', 'omodify', 'xxxx'
> > SQLConnect 'HOMER', 'omodify', 'xxxx'
> > dbd_error: SQLError returned -2 unexpectedly.
> > dbd_error: SQLError returned -2 unexpectedly.
> 
> -2 is SQL_INVALID_HANDLE - it probably means a call
> to
> SQLAllocHandle for the environment (most likely) or
> connection
> handle failed. Sometimes the reason for this is
> there is
> somthing set for user A (like an environment
> variable e.g. ODBCHOME)
> that is not set for user B. When you use
> LogonUser=userB then
> SQLAllocHandle for the environment fails.
> 
> All this is delayed with OOB as it does nothing
> until the
> application actually calls SQLDriverConnect or
> SQLConnect.
> Once the app (perl in this case) calls one of those
> functions,
> OOB client contacts server, verifies authentication
> with
> LogonUser/LogonAuth, then calls SQLAllocHandle for
> env,
> for dbc and finally SQLDriverConnect for the remote
> driver.
> 
> <snipped rest of log>
> 
> Your earlier posting with an OOB log indicates this
> too as
> all the calls on connection handles give
> SQL_INVALID_HANDLE.
> 
> The OOB log you also posted has the start stripped
> off and
> unfortunately the connection handle was allocated in
> this part
> of the log. If we had this, the problem would be
> more easily identified.
> 
> If I understand your other postings correctly, you
> are saying make test works
> but perl run after make install don't - yes?
> 
> However, in yet a later posting you say OOB test
> programs connect
> to your server fine but perl through unixODBC and
> OOB do not. I think this is
> the giveaway. unixODBC uses dlopen to open the
> driver and dlsym to resolve the
> symbols in the driver. If the wrong options for your
> platform are passed to
> dlopen unixODBC can end up resolving some of the SQL
> function symbols in itself
> instead of in the driver. What then happens if that
> handles passed back to
> unixODBC from OOB can end up being passed in to
> unixODBC functions. You can
> confirm this by linking DBD::ODBC directly with OOB
> i.e. set ODBCHOME to
> /x/y/easysoft/oob/client. If it works then the
> likely reason is you are running
> a version of unixODBC that has picked the wrong
> LAZY/NOW etc flags for the
> dlopen call - it is some mismatch between the way
> perl was built and unixODBC -
> you might recollect the start of make test for
> DBD::ODBC outputting
> PERL_DL_NONLAZY=1. I have seen this happen before
> with older unixODBCs but Nick
> fixed it. If you need unixODBC and are running an
> old copy then get a new one
> from ftp://ftp.easysoft.com/pub/beta/unixODBC
> (current version 2.2.0 I think).
> Alternatively, you will need to edit the
> libltdl/ltdl.c file in unixODBC and
> switch the flags to dlopen. If you don't need
> unixODBC or are so pushed for
> time you just need to get this working now, link
> DBD::ODBC directly with OOB.
> 
> Martin
> --
> Martin J. Evans
> Easysoft Ltd, UK
> Development
> 


__________________________________________________
Do You Yahoo!?
Yahoo! Sports - Coverage of the 2002 Olympic Games
http://sports.yahoo.com

Reply via email to