PKG 配布を使用した Solaris への MySQL のインストールに関する情報は、項2.6. 「Solaris に MySQL をインストールする」 を参照してください。
Solaris の tar が長いファイル名を扱えないので、Solaris を使用する際、MySQL 配布を解凍する前でさえ、問題に遭遇する場合があります。これは MySQL を解凍するときにエラーが表示されることを意味します。
この問題が発生したら、GNU tar (gtar) を使用して配布を解凍します。
Sun のネイティブスレッドは Solaris 2.5 およびそれ以降でしが動作しません。Solaris 2.4 およびそれ以前には、MySQL 自動的に MIT-pthreads を使用します。項2.10.5. 「MIT-pthreads ノート」 を参照してください。
configure で以下のエラーが表示された場合には、コンパイラのインストールに問題があることを意味しています。
checking for restartable system calls... configure: error can not run test programs while cross compiling
        この場合、コンパイラを新しいバージョンにアップグレードします。この問題を
        config.cache
        ファイルに以下の行を追加することでも解決できる場合があります。
      
ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}
SPARC で Solaris を使用している場合にお勧めするコンパイラは、gcc 2.95.2 または 3.2 です。これは、http://gcc.gnu.org/ で入手できます。gcc 2.8.1 の動作は SPARC では信頼性に欠けます。
gcc 2.95.2 を使用する際に推奨している configure 行は:
CC=gcc CFLAGS="-O3" \
CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory \
    --enable-assembler
        UltraSPARC システムの場合、-mcpu=v8
        -Wa,-xarch=v8plusa を
        CFLAGS および
        CXXFLAGS
        環境変数に追加すると 4 %
        パフォーマンスが向上します。
      
Sun の Forte 5.0 (あるいはそれ以降) コンパイラには、configure を以下のように実行します。
CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \ CXX=CC CXXFLAGS="-noex -mt" \ ./configure --prefix=/usr/local/mysql --enable-assembler
Sun の Forte コンパイラで 64 ビットのバイナリを作成するには、以下の設定オプションを使用します。
CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \ CXX=CC CXXFLAGS="-noex -mt -xarch=v9" ASFLAGS="-xarch=v9" \ ./configure --prefix=/usr/local/mysql --enable-assembler
        gcc を使用して 64
        ビットの Solaris
        バイナリを作成するには、-m64 を
        CFLAGS および
        CXXFLAGS に追加して
        --enable-assembler を
        configure
        行から削除します。
      
        MySQL ベンチマークでは、Forte 5.0 を 32
        ビットモードで使用すると、gcc
        3.2 を -mcpu
        フラグで使用した場合に比べて UltraSPARC
        上で速度が 4% 速くなります。
      
64-bit mysqld バイナリは、32 ビットバイナリより速度は 4% 遅くなりますが、さらに多くのスレッドおよびメモリーを処理できます。
        Solaris 10 を x86_64
        で使用する場合、InnoDB
        ファイルを forcedirectio
        オプションで保持するファイルシステムをマウントするようにしてください。(デフォルトではこのオプションは実装されていません)。それを実装しないと
        InnoDB
        ストレージエンジンをこのプラットフォームで使用した場合性能が大幅に劣化します。
      
        fdatasync あるいは
        sched_yield
        で問題があった場合、LIBS=-lrt
        を configure
        行に追加すると修正できます。
      
WorkShop 5.3 以前のコンパイラの場合、configure スクリプトを編集する必要があります。この行を:
#if !defined(__STDC__) || __STDC__ != 1
以下のように変更します。
#if !defined(__STDC__)
        __STDC__ を
        -Xc オプションで起動すると、Sun
        のコンパイラは Solaris
        pthread.h
        ヘッダーファイルではコンパイルできません。これじゃ
        Sun のバグです
        (破損したコンパイラあるいは破損した include
        ファイル)。
      
        mysqld
        を実行したときに以下のエラーメッセージが表示された場合、-mt
        マルチスレッドオプションを有効にしないで
        MySQL を Sun
        のコンパイラでコンパイルしてみます。
      
libc internal error: _rmutex_unlock: rmutex not held
        -mt を
        CFLAGS および
        CXXFLAGS
        追加して再コンパイルします。
      
        gcc の SFW バージョン
        (Solaris 8 に同梱)
        を使用する場合、/opt/sfw/lib
        を環境変数
        LD_LIBRARY_PATH に
        configure を実行数 r
        前に追加します。
      
        gcc を
        sunfreeware.com
        から入手して使用する場合、多くの問題が発生する場合があります。これを避けるには、gcc
        および GNU binutils
        をそれらを動作しているマシンでコンパイルする必要があります。
      
MySQL を gcc でコンパイル中に以下のエラーが表示された場合、gcc が使用している 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'
この場合の適切な方法は gcc の最新バージョンを入手してそれを現在の gcc コンパイラでコンパイルすることです。少なくとも Solaris 2.5、gcc のほとんどすべてのバイナリバージョンは古くて、使用できない include ファイルを使用しており、スレッドを使用するすべてのプログラムを破損し、同様にほかのプログラムも破損させる可能性があります。
        Solaris
        ではどのシステムライブラリも静的バージョン
        (libpthreads および
        libdl)
        を提供していませんので、MySQL を
        --static
        でコンパイルすることはできません。コンパイルしようとすると、以下のエラーが表示されます。
      
ld: fatal: library -ldl: not found undefined reference to `dlopen' cannot find -lrt
お客様ご自身の MySQL クライアントプログラムをリンクさせる場合、ランタイムで以下のエラーが表示される場合があります。
ld.so.1: fatal: libmysqlclient.so.#: open failed: No such file or directory
この問題は以下のメソッドのいずれかで回避できます。
        zlib
        をインストールせずに -lz
        にリンクする際
        configure
        に問題がある場合、2
        つのオプションがあります。
      
            圧縮通信プロトコルを使用するには、zlib
            を ftp.gnu.org
            から取得してインストールします。
          
            MySQL をビルドするには
            configure を
            --with-named-z-libs=no
            オプションで実行します。
          
        gcc
        を使用してユーザー定義関数 (UDFs) の MySQL
        へのロードで問題がある場合、-lgcc
        を UDF のリンク行に追加してみます。
      
        MySQL
        自動的に起動するには、support-files/mysql.server
        を /etc/init.d
        にコピーして、シンボリックリンクを
        /etc/rc3.d/S99mysql.server
        の名前のそれに作成します。
      
あまりにも多くのプロセスが急激に mysqld に接続を試みた場合、MySQL ログに以下のエラーが記録されます。
Error in accept: Protocol error
        この問題の回避策としてサーバーを
        --back_log=50
        オプションで起動してみます。(MySQL 4 の前に
        -O back_log=50 を使用します)。
      
        Solaris は setuid()
        アプリケーションのコアファイルをサポートしていないので、--user
        オプションを使用している場合、コアファイルを
        mysqld
        から取得できません。
      

