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 <[email protected]>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
>