
Kapitel 3: Installation von MySQL 111
#if !defined(__STDC__)
Wenn Sie __STDC__ mit der -Xc-Option anschalten, kann der Sun-Kompiler nicht mit der
Solaris-‘pThread.h’-Header-Datei kompilieren. Das ist ein Bug von Sun (Kompiler-Problem
oder besch¨adigte Include-Datei).
Wenn mysqld beim Laufenlassen eine Fehlermeldung wie die unten stehende ausgibt, haben
Sie versucht, MySQL mit dem Sun-Kompiler zu kompilieren, ohne die Multi-Thread-Option
(-mt) anzuschalten:
libc internal error: _rmutex_unlock: rmutex not held
F¨ugen Sie -mt zu CFLAGS und CXXFLAGS hinzu und versuchen Sie es noch einmal.
Wenn Sie folgenden Fehler beim Kompilieren von MySQL mit gcc erhalten, ist Ihr gcc
nicht f¨ur Ihre Version von Solaris konfiguriert:
shell> gcc -O3 -g -O2 -DDBUG_OFF -o thr_alarm ...
./thr_alarm.c: In function ‘signal_hand’:
./thr_alarm.c:556: too many arguments to function ‘sigwait’
Die einzige richtige M¨oglichkeit in diesem Fall ist, sich die neueste Version von gcc zu be-
sorgen und Sie mit Ihrem aktuellen gcc-Kompiler zu kompilieren. Zumindest auf Solaris
2.5 haben fast alle Bin¨arversionen von gcc alte, unbrauchbare Include-Dateien, die alle Pro-
gramme besch¨adigen, die Threads benutzen (und m¨oglicherweise auch andere Programme)!
Solaris stellt keine statischen Versionen aller Systembibliotheken zur Verf¨ugung
(libpThreads und libdl). Daher k¨onnen Sie MySQL nicht mit --static kompilieren.
Wenn Sie es dennoch versuchen, erhalten Sie folgenden Fehler:
ld: fatal: library -ldl: not found
oder
undefined reference to ‘dlopen’
oder
cannot find -lrt
Wenn zu viele Prozesse zu schnell hintereinander versuchen, sich mit mysqld zu verbinden,
werden Sie folgenden Fehler im MySQL-Log sehen:
Error in accept: Protocol error
Als Workaround k¨onnen Sie versuchen, den Server mit der --set-variable back_log=50-
Option zu starten. Siehe Abschnitt 5.1.1 [Command-line options], Seite 170.
Wenn Sie Ihren eigenen MySQL-Client linken, erhalten Sie m¨oglicherweise folgenden Fehler,
wenn Sie versuchen, ihn auszuf¨uhren:
ld.so.1: ./my: fatal: libmysqlclient.so.#: open failed: No such file or directory
Dieses Problem kann mit einer der folgenden Methoden vermieden werden:
• Linken Sie den Client mit folgendem Flag (anstelle von -Lpath): -Wl,r/full-path-
to-libmysqlclient.so.
• Kopieren Sie ‘libmysqclient.so’ nach ‘/usr/lib’.
Comentários a estes Manuais