アップグレード後に、コンパイル済みのクライアントプログラムに、「コマンドは同期されていません」
または予期しないコアダンプなどの問題が発生した場合は、プログラムが古いヘッダーファイルまたはライブラリファイルを使用してコンパイルされた可能性があります。この場合、コンパイルに使用された mysql.h
ファイルおよび libmysqlclient.a
ライブラリの日付をチェックして、それらが新しい MySQL 配布からのものであることを確認します。そうでない場合には、プログラムを新しいヘッダーおよびライブラリで再コンパイルします。ライブラリのメジャーバージョン番号が変更された (libmysqlclient.so.17
から libmysqlclient.so.18
など) 場合に、共有クライアントライブラリに対してコンパイルされているプログラムでも、再コンパイルが必要になる可能性があります。
メジャークライアントライブラリバージョンによって互換性が決まります。(たとえば、libmysqlclient.so.18.1.0
の場合、メジャーバージョンは 18 です。)このため、新しいバージョンの MySQL に付属するライブラリは、同じメジャー番号を持つ古いバージョンの簡単に取り換え可能な代替です。メジャーライブラリバージョンが同じであるかぎり、ライブラリをアップグレードでき、古いアプリケーションはそれと連携し続けます。
MySQL プログラムを実行しようとすると、実行時に未定義参照エラーが発生することがあります。これらのエラーで mysql_
から始まるシンボルが指定されているか、libmysqlclient
ライブラリが見つからないことを示している場合、それはシステムが共有 libmysqlclient.so
ライブラリを見つけられないことを意味します。この問題の解決方法は、システムにそのライブラリが存在するディレクトリ内で共有ライブラリを検索するように伝えることです。次の方法のうち使用しているシステムに適切な方法を使用します。
libmysqlclient.so
が存在するディレクトリのパスをLD_LIBRARY_PATH
またはLD_LIBRARY
環境変数に追加します。OS X では、
libmysqlclient.dylib
が存在するディレクトリのパスをDYLD_LIBRARY_PATH
環境変数に追加します。共有ライブラリファイル (
libmysqlclient.so
など) を、/lib
などシステムによって検索されるいくつかのディレクトリにコピーし、ldconfig
を実行して、共有ライブラリ情報を更新します。すべての関連ファイルをコピーしてください。共有ライブラリは、代替名を提供するシンボリックリンクを使用して、複数の名前で存在することがあります。
アプリケーションが組み込みサーバーライブラリにリンクされている場合、実行時エラーメッセージに、libmysqlclient
ライブラリではなく、libmysqld
が示されますが、この問題の解決方法は説明したばかりのものと同じです。