Perl support for MySQL is provided by means of the
DBI
/DBD
client interface. 20.5 API MySQL en Perl. The Perl
DBD
/DBI
client code requires Perl 5.004 or later. The
interface will not work if you have an older version of Perl.
MySQL Perl support also requires that you've installed
MySQL client programming support. If you installed MySQL
from RPM files, client programs are in the client RPM, but client programming
support is in the developer RPM. Make sure you've installed the latter RPM.
As of release 3.22.8, Perl support is distributed separately from the main
MySQL distribution. If you want to install Perl support, the files
you will need can be obtained from http://www.mysql.com/Contrib.
The Perl distributions are provided as compressed tar
archives and
have names like `MODULE-VERSION.tar.gz', where MODULE
is the
module name and VERSION
is the version number. You should get the
Data-Dumper
, DBI
, and Msql-Mysql-modules
distributions
and install them in that order. The installation procedure is shown below.
The example shown is for the Data-Dumper
module, but the procedure is
the same for all three distributions.
-
Unpack the distribution into the current directory:
shell> gunzip < Data-Dumper-VERSION.tar.gz | tar xvf -
This command creates a directory named `Data-Dumper-VERSION'.
-
Change into the top-level directory of the unpacked distribution:
shell> cd Data-Dumper-VERSION
-
Build the distribution and compile everything:
shell> perl Makefile.PL
shell> make
shell> make test
shell> make install
The make test
command is important, because it verifies that the
module is working. Note that when you run that command during the
Msql-Mysql-modules
installation to exercise the interface code, the
MySQL server must be running or the test will fail.
It is a good idea to rebuild and reinstall the Msql-Mysql-modules
distribution whenever you install a new release of MySQL,
particularly if you notice symptoms such as all your DBI
scripts
dumping core after you upgrade MySQL.
If you don't have the right to install Perl modules in the system directory
or if you to install local Perl modules, the following reference may help
you:
http://www.iserver.com/support/contrib/perl5/modules.html
Look under the heading
Installing New Modules that Require Locally Installed Modules
.
To install the MySQL DBD
module with ActiveState Perl on
Win32, you should do the following:
- Open a DOS shell.
- If required, set the HTTP_proxy variable. For example, you might try:
set HTTP_proxy=my.proxy.com:3128
- Start the PPM program:
C:\perl\bin\ppm.pl
- If you have not already done so, install
DBI
: install DBI
- If this succeeds, install
DBD::mysql:
http://www.mysql.com/Contrib/ppd/DBD-mysql.ppd
If you can't get the above to work, you should instead install the MyODBC
driver and connect to MySQL server through ODBC.
use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn","$user","$password") ||
die "Got error $DBI::errstr when connecting to $dsn\n";
The MySQL Perl distribution contains DBI
,
DBD:MySQL
and DBD:ODBC
.
- Get the Perl distribution for Win32 from
http://www.mysql.com/download.html.
- Unzip the distribution in
C:
so that you get a `C:\PERL' directory.
- Add the directory `C:\PERL\BIN' to your path.
- Add the directory `C:\PERL\BIN\MSWin32-x86-thread' or
`C:\PERL\BIN\MSWin32-x86' to your path.
- Test that
perl
works by executing perl -v
in a DOS shell.
If Perl reports that it can't find the ../mysql/mysql.so
module,
then the problem is probably that Perl can't locate the shared library
`libmysqlclient.so'.
You can fix this by any of the following méthodes:
-
Compile the
Msql-Mysql-modules
distribution with perl
Makefile.PL -static
rather than perl Makefile.PL
-
Copy
libmysqlclient.so
to the directory where your other shared
libraries are located (probably `/usr/lib' or `/lib').
-
On
Linux
you can add the pathname of the directory where
libmysqlclient.so
is located to the `/etc/ld.so.conf' file.
-
Add the pathname of the directory where
libmysqlclient.so
is located
to the LD_RUN_PATH
environment variable.
If you get the following errors from DBD-mysql
,
you are probably using gcc
(or using an old binary compiled with
gcc
):
/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'
Add -L/usr/lib/gcc-lib/... -lgcc
to the link command when the
`mysql.so' library gets built (check the output from make
for
`mysql.so' when you compile the Perl client). The -L
option
should specify the pathname of the directory where `libgcc.a' is located
on your system.
Another cause of this problem may be that Perl and MySQL aren't both
compiled with gcc
. In this case, you can solve the mismatch by
compiling both with gcc
.
If you want to use the Perl module on a system that doesn't support dynamic
linking (like SCO) you can generate a static version of Perl that includes
DBI
and DBD-mysql
. The way this works is that you generate a
version of Perl with the DBI
code linked in and install it on top of
your current Perl. Then you use that to build a version of Perl that
additionally has the DBD
code linked in, and install that.
On SCO, you must have the following environment variables set:
shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
or
shell> LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib
shell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib
shell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:/usr/skunk/man:
First, create a Perl that includes a statically-linked DBI
by running
these commands in the directory where your DBI
distribution is
located:
shell> perl Makefile.PL LINKTYPE=static
shell> make
shell> make install
shell> make perl
Then you must install the new Perl. The output of make perl
will
indicate the exact make
command you will need to execute to perform
the installation. On SCO, this is make -f Makefile.aperl inst_perl
MAP_TARGET=perl
.
Next, use the just-created Perl to create another Perl that also includes a
statically-linked DBD::mysql
by running these commands in the
directory where your Msql-Mysql-modules
distribution is located:
shell> perl Makefile.PL LINKTYPE=static
shell> make
shell> make install
shell> make perl
Finally, you should install this new Perl. Again, the output of make
perl
indicates the command to use.