HP-UX バージョン 11.x の場合は、MySQL バージョン 3.23.15 以降を推奨します。
標準の HP-UX ライブラリにはいくつかの重大なバグがあるため、HP-UX 11.0 上で MySQL を実行する前に以下のパッチをインストールする必要があります。
PHKL_22840 Streams cumulative PHNE_22397 ARPA cumulative
これによって、スレッドアプリケーションで、recv()
から EWOULDBLOCK
を、accept()
から
EBADF
を受け取るという問題が解決されます。
パッチ未適用の HP-UX 11.x システム上で
gcc
2.95.1
を使用している場合、以下のエラーが発生します。
In file included from /usr/include/unistd.h:11, from ../include/global.h:125, from mysql_priv.h:15, from item.cc:19: /usr/include/sys/unistd.h:184: declaration of C function ... /usr/include/sys/pthread.h:440: previous declaration ... In file included from item.h:306, from mysql_priv.h:158, from item.cc:19:
問題は、HP-UX の pthreads_atfork()
の定義に整合性がないことです。
/usr/include/sys/unistd.h
:184 と
/usr/include/sys/pthread.h
:440
に、矛盾したプロトタイプがあります(詳細は以下で述べます)。
1
つの解決法は、/usr/include/sys/unistd.h
を mysql/include
にコピーして、unistd.h
を編集して、pthread.h
内の定義と一致するように変更することです。以下に
diff を示します。
183,184c183,184 < extern int pthread_atfork(void (*prepare)(), void (*parent)(), < void (*child)()); --- > extern int pthread_atfork(void (*prepare)(void), void (*parent)(void), > void (*child)(void));
この後は、以下の configure 行が機能します。
CFLAGS="-fomit-frame-pointer -O3 -fpic" CXX=gcc \ CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -O3" \ ./configure --prefix=/usr/local/mysql --disable-shared
HP-UX コンパイラと共に MySQL 4.0.5 を使用している場合は、以下を使用できます (cc B.11.11.04 でテスト済み)。
CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure --with-extra-character-set=complex
以下のようなエラーは無視してかまいません。
aCC: warning 901: unknown option: `-3': use +help for online documentation
configure
時に以下のエラーが出力される場合
checking for cc option to accept ANSI C... no configure: error: MySQL requires a ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.
HP-UX の C および C++ コンパイラへのパスの前に K&R コンパイラへのパスがないことを確認します。
コンパイルできないもう 1 つの理由は、上で
+DD64
フラグを定義していないことです。
HP-UX 11 のもう 1 つの可能性は、HP-UX 10.20 用の MySQL バイナリを使用することです。 これらのバイナリが HP-UX 11.00 で正常に機能することがユーザから報告されています。問題が発生した場合は、必ず HP-UX のパッチのレベルをチェックしてください。
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.