Wenn Perl meldet, dass das Modul
../mysql/mysql.so
nicht gefunden werden
kann, dann liegt das wahrscheinlich daran, dass Perl die
gemeinsame Bibliothek libmysqlclient.so
nicht findet. Sie sollten dieses Problem auf eine der folgenden
Weisen lösen können:
Kompilieren Sie die Distribution
DBD::mysql
mit perl Makefile.PL
-static -config
statt mit perl
Makefile.PL
.
Kopieren Sie libmysqlclient.so
in das
Verzeichnis, in dem sich Ihre anderen gemeinsamen
Bibliotheken befinden (dies ist wahrscheinlich
/usr/lib
oder
/lib
).
Ändern Sie die -L
-Optionen zur
Kompilierung von DBD::mysql
so ab, dass
die tatsächliche Position von
libmysqlclient.so
berücksichtigt wird.
Unter Linux können Sie den Pfadnamen des Verzeichnisses, in
dem sich libmysqlclient.so
befindet,
zur Datei /etc/ld.so.conf
hinzufügen.
Fügen Sie den Pfadnamen des Verzeichnisses, in dem sich
libmysqlclient.so
befindet, der
Umgebungsvariablen LD_RUN_PATH
hinzu.
Einige Systeme verwenden stattdessen
LD_LIBRARY_PATH
.
Beachten Sie, dass Sie möglicherweise auch die
-L
-Optionen ändern müssen, wenn auch andere
Bibliotheken vom Linker nicht gefunden werden. Kann der Linker
beispielsweise libc
nicht finden, weil sich
die Datei in /lib
befindet, der
Verknüpfungsbefehl aber -L/usr/lib
angibt,
dann ändern Sie die Option -L
zu
-L/lib
oder fügen -L/lib
zum
vorhandenen Verknüpfungsbefehl hinzu.
Wenn Sie die folgenden Fehler von DBD::mysql
erhalten, verwenden Sie wahrscheinlich gcc
(oder eine alte Binärdatei, die mit gcc
kompiliert wurde):
/usr/bin/perl: can't resolve symbol '__moddi3' /usr/bin/perl: can't resolve symbol '__divdi3'
Fügen Sie -L/usr/lib/gcc-lib/... -lgcc
zum
Verknüpfungsbefehl hinzu, wenn die Bibliothek
mysql.so
erstellt wird (überprüfen Sie
die Ausgabe von make bezüglich
mysql.so
, wenn Sie den Perl-Client
kompilieren). Die -L
-Option sollte den
Pfadnamen des Verzeichnisses angeben, in dem
libgcc.a
auf Ihrem System gespeichert ist.
Eine andere Ursache dieses Problems könnte sein, dass nicht sowohl Perl als auch MySQL mit gcc kompiliert wurden. In diesem Fall können Sie die Nichtübereinstimmung beheben, indem Sie beide mit gcc kompilieren.
Wenn Sie die Tests ausführen, gibt
DBD::mysql
unter Umständen die folgende
Fehlermeldung aus:
t/00base............install_driver(mysql) failed: Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: ../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.
Dies bedeutet, dass Sie die Komprimierungsbibliothek
-lz
in der Verknüpfungszeile hinzufügen
müssen. Dies können Sie tun, indem Sie in der Datei
lib/DBD/mysql/Install.pm
die Zeile
$sysliblist .= " -lm";
wie folgt ändern:
$sysliblist .= " -lm -lz";
Danach müssen Sie make realclean ausführen und nachfolgend von vorne mit der Installation beginnen.
Wenn Sie DBI unter SCO installieren wollen, müssen Sie
Makefile
in
DBI-xxx
und allen Unterverzeichnissen
bearbeiten. Beachten Sie, dass das Folgende
gcc 2.95.2 oder höher voraussetzt:
OLD: NEW: CC = cc CC = gcc CCCDLFLAGS = -KPIC -W1,-Bexport CCCDLFLAGS = -fpic CCDLFLAGS = -wl,-Bexport CCDLFLAGS = LD = ld LD = gcc -G -fpic LDDLFLAGS = -G -L/usr/local/lib LDDLFLAGS = -L/usr/local/lib LDFLAGS = -belf -L/usr/local/lib LDFLAGS = -L/usr/local/lib LD = ld LD = gcc -G -fpic OPTIMISE = -Od OPTIMISE = -O1 OLD: CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include NEW: CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include
Diese Änderungen sind erforderlich, weil der Perl-Dynaloader
die DBI
-Module nicht lädt, wenn diese mit
icc oder cc kompiliert
wurden.
Wollen Sie das Perl-Modul auf einem System verwenden, das keine
dynamischen Verknüpfungen unterstützt (wie z. B. SCO), dann
können Sie eine statische Perl-Version erzeugen, die
DBI
und DBD::mysql
enthält. Dies funktioniert so, dass Sie eine Perl-Version mit
verknüpftem DBI
-Code erzeugen und diese
über Ihre aktuelle Perl-Installation installieren. Dieses
verwenden Sie dann zur Erstellung einer Perl-Version, die
zusätzlich den verknüpften DBD
-Code
beinhaltet und die Sie dann installieren.
Unter SCO müssen Sie zuvor die folgenden Umgebungsvariablen einstellen:
LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
Oder:
LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\ /usr/progressive/lib:/usr/skunk/lib LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\ /usr/progressive/lib:/usr/skunk/lib MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\ /usr/skunk/man:
Sie erstellen zunächst eine Perl-Version, die ein statisch
verknüpftes DBI
-Modul enthält. Dies tun Sie
durch Ausführen der folgenden Befehle in dem Verzeichnis, in
dem Ihre DBI
-Distribution gespeichert ist:
shell>perl Makefile.PL -static -config
shell>make
shell>make install
shell>make perl
Danach müssen Sie das neue Perl installieren. Die Ausgabe von make perl gibt den exakten make-Befehl an, den Sie ausführen müssen, um die Installation durchzuführen. Unter SCO heißt der Befehl make -f Makefile.aperl inst_perl MAP_TARGET=perl.
Als Nächstes verwenden Sie das gerade erstellte Perl zur
Erstellung eines anderen Perl, welches auch ein statisch
verknüpftes DBD::mysql
enthält. Hierzu
führen Sie die folgenden Befehle in dem Verzeichnis aus, in dem
sich Ihre DBD::mysql
-Distribution befindet:
shell>perl Makefile.PL -static -config
shell>make
shell>make install
shell>make perl
Abschließend sollten Sie dieses neue Perl installieren. Auch hier zeigt die Ausgabe von make perl den zu verwendenden Befehl an.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.