Sous Solaris, vous pouvez rencontrer des problèmes avant même
d'avoir désarchivé la distribution MySQL! Le programme
tar
de Solaris ne peut pas manipuler de noms
de fichiers longs, provoquant les messages suivants quand vous
décompressez MySQL :
x mysql-3.22.12-beta/bench/Results/ATIS-mysql_odbc-NT_4.0-cmp-db2,\ informix,ms-sql,mysql,oracle,solid,sybase, 0 bytes, 0 tape blocks tar: directory checksum error
Dans ce cas, vous devez utiliser GNU tar
(gtar
) pour désarchiver la distribution.
Vous pouvez en trouver une copie précompilée pour Solaris sur
http://www.mysql.com/Downloads/.
La gestion native des threads Sun fonctionne uniquement depuis
Solaris 2.5. Pour les versions 2.4 et antérieures, MySQL
utilisera automatiquement les MIT-pthreads
.
See Section 2.4.5, « Notes relatives aux MIT-pthreads
».
Vous pouvez rencontrer les erreurs suivantes lors du configure :
checking for restartable system calls... configure: error can not run test programs while cross compiling
Cela signifie que l'installation de votre compilateur est
défectueuse! Dans ce cas, vous devez mettre à jour votre
compilateur en faveur d'une version plus récente. Vous pouvez
aussi résoudre le problème en innérant la ligne suivante dans
le fichier config.cache
:
ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}
Si vous utilisez Solaris sur une architecture SPARC, nous
recommandons gcc
2.95.2 comme compilateur.
Vous pouvez le trouver sur
http://gcc.gnu.org/.
Notez que egcs
1.1.1 et
gcc
2.8.1 ne fonctionnent pas correctement
sur SPARC!
La ligne configure
recommandée dans le cas
de l'utilisation de gcc
2.95.2 est :
CC=gcc CFLAGS="-O3" \ CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr/local/mysql --with-low-memory --enable-assembler
Si vous avez une machine UltraSPARC, vous pouvez gagner 4% de
performances supplémentaires en ajoutant "-mcpu=v8
-Wa,-xarch=v8plusa
" à CFLAGS et CXXFLAGS.
Si vous utilisez le compilateur Forte 5.0 (et supérieur) de
Sun, vous pouvez lancer configure
de la
fa¸on suivante :
CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \ CXX=CC CXXFLAGS="-noex -mt" \ ./configure --prefix=/usr/local/mysql --enable-assembler
Vous pouvez créer un binaire 64 bits avec :
CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \ CXX=CC CXXFLAGS="-noex -mt -xarch=v9" \ ./configure --prefix=/usr/local/mysql --enable-assembler
Lors de bancs de tests MySQL, nous avons gagné 4% en vitesse
sur une UltraSPARC en utilisant Forte 5.0 en mode 32 bits
plutôt que gcc 3.2 avec les marqueurs -mcpu
.
Si vous créez un binaire 64 bits, il est de 4% plus lent que le binaire 32 bits,mais en contrepartie vous pouvez gérer davantage de treads et de mémoire.
Si vous rencontrez des problèmes avec
fdatasync
ou sched_yield
,
vous pouvez les résoudre en ajoutant
LIBS=-lrt
à la ligne configure.
Le paragraphe suivant ne s'applique qu'aux compilateurs plus anciens que WorkShop 5.3 :
Vous pouvez avoir à modifier le script
configure
et changer la ligne :
#if !defined(__STDC__) || __STDC__ != 1
en :
#if !defined(__STDC__)
Si vous activez __STDC__
avec l'option
-Xc
, le compilateur Sun ne peut pas compiler
avec le fichier d'entêtes pthread.h
de
Solaris. C'est un bogue de Sun (compilateur ou fichier
d'inclusion défectueux).
Si mysqld
génère les messages d'erreur
suivants lorsque vous le lancez, cela est du au fait que vous
avez compilé MySQL avec le compilateur de Sun sans activer
l'option multi-threads (-mt
) :
libc internal error: _rmutex_unlock: rmutex not held
Ajoutez -mt
à CFLAGS
et
CXXFLAGS
puis réessayez.
Si vous utilisez la version SFW de gcc (fournie avec Solaris 8),
vous devez ajouter /opt/sfw/lib
à la
variable d'environnement LD_LIBRARY_PATH
avant de lancer le configure.
Si vous utilisez le gcc disponible sur
sunfreeware.com
, vous pouvez rencontrer de
nombreux problèmes. Vous devriez recompiler gcc et les GNU
binutils sur la machine à partir de laquelle vous les
utiliserez, afin d'éviter tout souci.
Si vous obtenez l'erreur suivante lorsque vous compilez MySQL
avec gcc
, cela signifie que votre
gcc
n'est pas configuré pour votre version
de Solaris :
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'
La meilleure chose à faire dans ce cas est d'obtenir la version
la plus récente de gcc
et de compiler avec
votre gcc
actuel! Au moins pour Solaris 2.5,
la plupart des versions binaires de gcc
ont
d'anciens fichiers d'inclusion inutilisables qui planteront les
programmes qui utilisent les threads (ainsi probablement
d'autres programmes)!
Solaris ne fournit pas de versions statiques de toutes les
bibliothèques système (libpthreads
et
libdl
), vous ne pouvez donc pas compiler
MySQL avec --static
. Si vous tentez de le
faire, vous obtiendrez l'erreur :
ld: fatal: library -ldl: not found undefined reference to `dlopen' cannot find -lrt
Si de nombreux processus essaient de se connecter très
rapidement à mysqld
, vous verrez cette
erreur dans le journal MySQL :
Error in accept: Protocol error
Pour éviter cela, vous pouvez lancer le serveur avec l'option
--set-variable back_log=50
. Veuillez noter que
--set-variable
est déprécié depuis MySQL
4.0, utilisez uniquement --back_log=50
.
Si vous liez votre propre client MySQL, vous pouvez avoir l'erreur suivante quand vous le lancez :
ld.so.1: ./my: fatal: libmysqlclient.so.#: open failed: No such file or directory
Le problème peut être évité avec l'une des méthodes suivantes :
Si vous avez des soucis avec configure qui essaie de lier avec
-lz
et que vous n'avez pas installé
zlib
, vous avez deux solutions :
Si vous voulez utiliser le protocole compressé de communication, vous devrez vous procurer et installer zlib sur ftp.gnu.org.
Configurez avec --with-named-z-libs=no
.
Si vous utilisez gcc et rencontrez des problèmes en chargeant
la fonction UDF
dans MySQL, essayez d'ajouter
-lgcc
à la ligne de liaison de la fonction
UDF
.
Si vous voulez que MySQL se lance automatiquement, vous pouvez
copier support-files/mysql.server
dans
/etc/init.d
et créer un lien symbolique
pointant dessus et s'appelant
/etc/rc3.d/S99mysql.server
.
Comme Solaris ne supporte pas les fichiers core pour les
applications setuid()
, vous ne pouvez pas
obtenir un fichier core de mysqld
si vous
utilisez l'option --user
.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.