Solaris では、MySQL
        ディストリビューションをアンパックする前でも問題が発生することがあります。Solaris
        tar
        は長いファイル名を処理できないので、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
        この場合、GNU
        tar(gtar)を使用して、ディストリビューションをアンパックする必要がありますSolaris
        用のプリコンパイル済みコピーは、http://www.mysql.com/downloads/os-solaris.html
        にあります。
      
Sun のネイティブスレッドは、Solaris 2.5 以降でのみ機能します。バージョン 2.4 以前の Solaris の場合は、MySQL は自動的に MIT-pthreads を使用します。 See 項2.3.6. 「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/
        にあります。 注意: egcs 1.1.1
        および 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
        バイナリを作成するには、CFLAGS
        および CXXFLAGS に
        -m64 を追加します。注意:
        これは、MySQL 4.0 以降のみで機能します。MySQL
        3.23
        にはこれをサポートするために必要な変更が含まれていません。
      
        MySQL ベンチマークでは、UltraSPARC 上で 32
        ビットモードで Forte 5.0
        を使用した場合、-mcpu
        フラグを指定して gcc 3.2
        を使用した場合と比較して速度が 4%
        向上しました。
      
        64 ビットバイナリを作成した場合、32
        ビットバイナリよりも速度が 4%
        低下しますが、その代わりに
        mysqld
        はより多くのスレッドとメモリを処理できます。
      
        fdatasync または
        sched_yield
        で問題が発生した場合は、configure 行に
        LIBS=-lrt
        を追加することでその問題を修正できます。
      
以下の段落は、WorkShop 5.3 より前のバージョンのコンパイラにのみ関連するものです。
        configure
        スクリプトを編集して以下の行を変更する必要がある場合もあります。
      
#if !defined(__STDC__) || __STDC__ != 1
これを次のように変更します。
#if !defined(__STDC__)
        -Xc オプションを指定して
        __STDC__ を有効にすると、Sun
        のコンパイラは Solaris の pthread.h
        ヘッダファイルでコンパイルできません。これは
        Sun
        のバグです(コンパイラまたはインクルードファイルが壊れています)。
      
        mysqld
        を実行したときに、以下のようなエラーメッセージが出力された場合は、マルチスレッドオプション(-mt)を有効にしていない
        Sun のコンパイラを使用して MySQL
        をコンパイルしようとしています。
      
libc internal error: _rmutex_unlock: rmutex not held
        CFLAGS および CXXFLAGS
        に -mt
        を追加して、再実行してください。
      
        SFW バージョンの gcc (Solaris 8
        に付属している)を使用している場合は、configure
        を実行する前に、LD_LIBRARY_PATH
        環境変数に /opt/sfw/lib
        を追加する必要があります。
      
        sunfreeware.com から入手できる gcc
        を使用している場合は、多くの問題が発生することがあります。問題を回避するためには、gcc
        および GNU binutils
        を実行するマシン上で、それらを再コンパイルする必要があります。
      
        gcc を使用して MySQL
        をコンパイルしているときに以下のエラーが出力された場合は、その
        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
        のほとんどすべてのバイナリバージョンに古くて利用に適さないインクルードファイルが組み込まれており、それらによって、スレッドを使用するすべてのプログラム(そして、おそらくその他のプログラムも)が破壊されます。
      
        Solaris
        は、静的バージョンのシステムライブラリ(libpthreads
        および
        libdl)は一切提供しません。したがって、--static
        を指定して MySQL
        をコンパイルすることはできません。このオプションを指定してコンパイルすると、以下のエラーが表示されます。
      
ld: fatal: library -ldl: not found または undefined reference to `dlopen' または cannot find -lrt
        多すぎる数のプロセスが非常に迅速に
        mysqld に接続を試みると、MySQL
        ログに以下のエラーが出力されます。
      
Error in accept: Protocol error
        この問題を回避するために、--set-variable
        back_log=50
        オプションを指定してサーバを起動してみてください。
        注意: --set-variable=name=value
        構文および -O name=value
        構文は、MySQL 4.0
        以降廃止されました。代わりに、--back_log=50
        を使用してください。 See
        項4.1.1. 「mysqld コマンドラインオプション」。
      
独自の MySQL クライアントをリンクしている場合、そのクライアントを実行したときに、以下のエラーが発生することがあります。
ld.so.1: ./my: fatal: libmysqlclient.so.#: open failed: No such file or directory
以下のいずれかの方法でこの問題を回避できます。
        configure が -lz
        でリンクする際に問題が発生し、zlib
        をインストールしていない場合、以下の 2
        つの選択肢があります。
      
圧縮された通信プロトコルを使用できるようにする場合は、ftp.gnu.org から zlib を入手してインストールする必要がある。
            --with-named-z-libs=no
            を指定してコンフィギャする。
          
        gcc
        を使用していて、ユーザ定義関数(UDF)を
        MySQL
        にロードする際に問題が発生した場合は、その
        UDF をリンクする行に
        -lgcc を追加してみてください。
      
        MySQL
        を自動的に起動させる場合は、/etc/init.d
        に support-files/mysql.server
        をコピーして、/etc/rc3.d/S99mysql.server
        という名前でそのディレクトリへのシンボリックリンクを作成します。
      
        Solaris では setuid()
        アプリケーションのコアファイルがサポートされていないので、--user
        オプションを指定している場合、mysqld
        からコアファイルを取得することはできません。
      
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.

