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 >