Hi Bruce,

 

only some hints. It sounds to me like a shared object mess which may be 
possible after upgrading.

 

If DBD::mysql ist installed via CentOS repository than you should find the 
package

wit a

rpm -q -a | grep -i mysql

 

When you've found that package, you can do a 

rpm -q -l perl-DBD-MySQL          where perl-DBD-MySQL is the found package 
above.

 

Therein you should find the file which is the shared object to bind the mysql 
client

library, e.g. /usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so

 

Now you can have a look into that shared object to see which names have to

be resolved:

 

objdump -T /usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so

 

In the output you can see external references to other shared libraries, 
especially

these ones which are the building blocks of the mysql/mariadb driver.

 

Then you have to look into your filesystem whether there are different

incarnations of these so-Files.

 

But on the distance without having CentOS8 under my fingers just a guess.

 

Happy digging

Andreas

 

P.S.: Contraprove would be to install DBD::mysql into a local directory.

cpanm (App::cpanminus) makes it simple. Put "use lib 'thatdirectory';" in front 
of a testscript

and let DBI grab that version of the driver binding for you.

 

 

Von: Bruce Johnson <john...@pharmacy.arizona.edu> 
Gesendet: Dienstag, 2. Juni 2020 19:56
An: dbi users <dbi-users@perl.org>
Betreff: frustrating error DBD::mysql CentOS8

 

I’ve copied a working script from one server to another (upgrading a web 
application server from Cnetos6 to centos8) and I keep getting the error: 

 

[Tue Jun 02 10:29:32.289698 2020] [:error] [pid 3729:tid 140210163652352] 
DBD::mysql initialisation failed: Can't locate object method "driver" via 
package "DBD::mysql" at /usr/lib64/perl5/vendor_perl/DBI.pm line 
827.\n\nPerhaps the capitalisation of DBD 'mysql' isn't right. at 
/home/allwebfiles/perl/badges/choose.pl line 54.\n

 

Mysql (actually MariaDB) is installed and working. both DBI and DBD::MySQL were 
installed via the CentOS repositories. (perl-DBI perl-DBD-MySQL packages)

 

DBI itself is functional since other DB methods are working Oracle, for example.

 

This is the (working on the other server!) code to establish the database 
handle:

 

my $dsn = "DBI:mysql:database=$dbname;host=$dbhost;port=$dbport" or die 
$DBI::errstr;

 

my $dbh = DBI->connect($dsn, $dbuser, $dbpass,{'RaiseError' => 1});

 

Pretty standard stuff. I'm not sure why this is happening. It is NOT the error 
being reported...

 

-- 
Bruce Johnson
University of Arizona
College of Pharmacy
Information Technology Group

Institutions do not have opinions, merely customs

 

Reply via email to