Big thanks!

I did this:
ldd
/opt/perl_32/lib/site_perl/5.8.8/PA-RISC1.1-thread-multi/auto/DBD/ODBC/ODBC.sl

and got:

 /usr/local/liant/lib/libodbc.sl.1 =>    /usr/local/liant/lib/libodbc.sl.1
        /usr/lib/libc.2 =>      /usr/lib/libc.2
        /usr/lib/libdld.2 =>    /usr/lib/libdld.2
        /usr/lib/libc.2 =>      /usr/lib/libc.2
        /usr/lib/libpthread.1 =>        /usr/lib/libpthread.1

I tried isql -v prod1 username password

and it just hung like other attempts to access the database. No error
messages.




On Wed, Jun 26, 2013 at 12:11 PM, Martin J. Evans <boh...@ntlworld.com>wrote:

> On 26/06/2013 17:28, Dan Bent wrote:
>
>> I suddenly lost the ability to connect to my ODBC database yesterday,
>> after years of using the same function to establish a connection:
>>
>> sub dbaseconnect {
>>      if (defined($testing)) {
>>          if ($testing eq "YES") {
>>              $dsn =  'dbi:ODBC:test1' ;
>>              print "Using test database\n" ;
>>          } elsif ($testing eq "TRAIN") {
>>              $dsn =  'dbi:ODBC:train1' ;
>>              print "Using train1 database\n" ;
>>          } else {
>>              $dsn =  'dbi:ODBC:prod1' ;
>>          }
>>      } else {
>>          $dsn =  'dbi:ODBC:prod1' ;
>>      }
>>      $user =  'USER' ;
>>      $passwd =  'PASSWORD' ;
>>      my %adrivers = DBI->available_drivers();
>>      print join(", ", %adrivers), "\n" ;
>>
>>      print "connecting to DATABASE $dsn  $user $passwd\n" ;
>>      $dbh = DBI->connect($dsn, $user, $passwd,
>>                  {RaiseError => 1, AutoCommit => 0})
>>          or die "Could not connect to database: " . DBI->errstr ;
>>      print "connected to DATABASE $dsn \n" ;
>> }
>>
>> So, to gather information about where the failure is, I ran the
>> following program:
>>
>> #! /usr/bin/perl
>>
>> use DBI ;
>> use DBD::ODBC ;
>> use strict ;
>> use warnings ;
>>
>> print "Available Drivers: " ;
>> my @adrivers = DBI->available_drivers();
>> print join(", ", @adrivers), "\n" ;
>>
>> print "Data Sources: " ;
>> foreach my $driver ( @adrivers ) {
>>      print "Driver: $driver\n";
>>      my @dataSources = DBI->data_sources( $driver );
>>      foreach my $dataSource ( @dataSources ) {
>>          print "\tData Source is $dataSource\n";
>>      }
>>      print "\n";
>> }
>>
>> and the output I got was:
>>
>> Available Drivers: DBM, ExampleP, File, ODBC, Proxy, Sponge
>> Installed Drivers:
>> Data Sources: Driver: DBM
>>          Data Source is DBI:DBM:f_dir=.
>>          Data Source is DBI:DBM:f_dir=CIGNA
>>          Data Source is DBI:DBM:f_dir=Logs
>>          Data Source is DBI:DBM:f_dir=ONCOURSE
>>          Data Source is DBI:DBM:f_dir=autemp
>>          Data Source is DBI:DBM:f_dir=config
>>          Data Source is DBI:DBM:f_dir=fh.cob
>>          Data Source is DBI:DBM:f_dir=perlscripts
>>          Data Source is DBI:DBM:f_dir=pndspndwk
>>          Data Source is DBI:DBM:f_dir=prgrun_dir
>>          Data Source is DBI:DBM:f_dir=scripts
>>
>> Driver: ExampleP
>>          Data Source is dbi:ExampleP:dir=.
>>
>> Driver: File
>>          Data Source is DBI:File:f_dir=.
>>          Data Source is DBI:File:f_dir=CIGNA
>>          Data Source is DBI:File:f_dir=Logs
>>          Data Source is DBI:File:f_dir=ONCOURSE
>>          Data Source is DBI:File:f_dir=autemp
>>          Data Source is DBI:File:f_dir=config
>>          Data Source is DBI:File:f_dir=fh.cob
>>          Data Source is DBI:File:f_dir=perlscripts
>>          Data Source is DBI:File:f_dir=pndspndwk
>>          Data Source is DBI:File:f_dir=prgrun_dir
>>          Data Source is DBI:File:f_dir=scripts
>>
>> Driver: ODBC
>>
>> and the program just hangs when it looks for data sources using the ODBC
>> driver. So, I suspect that there are issues with the ODBC driver. Here
>> are the versions of the various DBI module components:
>>
>>   perl -MDBI -e 'DBI->installed_versions'
>>    Perl            : 5.008008    (PA-RISC1.1-thread-multi)
>>    OS              : hpux        (11.00)
>>    DBI             : 1.50
>>    DBD::Sponge     : 11.10
>>    DBD::Proxy      : install_driver(Proxy) failed: Can't locate
>> RPC/PlClient.pm in @INC
>>    DBD::ODBC       : 1.14
>>    DBD::File       : 0.33
>>    DBD::ExampleP   : 11.12
>>    DBD::DBM        : 0.03
>>
>> I imagine that I may not have the latest versions of everything, and
>> updates are probably in order, but, while updates are desirable, I'd
>> like to be sure that I'm addressing the root cause of the problem, so I
>> get it resolved. This issue affects a lot of programs, and is critical
>> to our business.
>> Any help or suggestions will be greatly appreciated.
>>
>>
> You are in deed running VERY old versions - especially of DBD::ODBC.
>
> You first need to think about what Jonathan said - he's probably right
> that working out what changed yesterday is probably going to give the
> quickest result.
>
> Assuming you cannot find anything here are some suggestions.
>
> DBD::ODBC is usually linked to an ODBC driver manager but back in the days
> of 1.14 people still linked directly to an ODBC driver sometimes - ODBC
> drivers did not support enumerating DSNs - only the driver manager does
> that. So first thing is hwo was DBD::ODBC built? If you don't know that
> look for ODBC.so in your perl tree and run the HPUX equivalent of Linux's
> ldd command on it to find what libraries it depends on (right now I cannot
> remember what the command is).
>
> Once you've done that if the answer is libodbc.so.something then you are
> probably using the unixODBC driver manager. In that case you should
> hopefully have an isql binary and you should have an odbc.ini and
> odbcinst.ini defining your drivers and DSNs. What is in those files. Can
> you run:
>
> isql -v TEST1 username password
> isql -v TRAIN1 username password
> isql -v PROD1 username password
>
> as you didn't say which one you are using?
>
> If you get back with this info I'll help more.
>
> Martin
> --
> Martin J. Evans
> Wetherby, UK
>

Reply via email to