mysql-pythonを使うときに気をつけること

MySQLを自分でコンパイルをしている場合などに、mysql-pythonを利用しようとすると、以下のような Tracebackがでることがあります。

$ python
>>> import MySQLdb
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.5/site-packages/MySQL_python-1.2.3c1-py2.5-linux-i686.egg/MySQLdb/__init__.py", line 19, in
import _mysql
ImportError: libmysqlclient_r.so.15: cannot open shared object file: No such file or directory

上記のようなTracebackがでている場合は、 mysqlのライブラリが読み込めない状態になっています。
Fedora10 であれば、通常は yum から mysql-libs をインストールすれば解決します。

しかし、 Tritonnパッチが当たっているのコンパイル済み tar ball 等を利用している場合は、自分でパスを指定してあげる必要があります。

共有ライブラリを追加する手順として、

  1. 共有ライブラリのパスを指定したファイルを作成する
  2. 共有ライブラリがキャッシュされているファイルを更新する
  3. 反映されたか確認する

となります。

実際に、 /opt/mysqlにインストールされているTritonn-MySQLのライブラリを追加するには、

1-1. mysql-tritonn.confを作成する

  • Fedora10 では、新たに追加しやすいように、 /etc/ld.so.conf.d が用意されています。
  • ディレクトリ配下に、 mysql-tritonn.conf を作成します。

1-2. パスを追記する

2. ldconfigコマンドを利用し、キャッシュへ反映させます。
3. ldconfig -p で確認する。

  • libmysqlclient_r.so.15, libmysqlclient.so.15 が追加されていれば成功です。

反映の手順 (mysql-tritonn.confへは、パスが設定済みとします)

# cat /etc/ld.so.conf.d/mysql-tritonn.conf
/opt/mysql/lib
# ldconfig
# ldconfig -p | grep mysql
        libmysqlclient_r.so.15 (libc6) => /opt/mysql/lib/libmysqlclient_r.so.15
        libmysqlclient.so.15 (libc6) => /opt/mysql/lib/libmysqlclient.so.15

動作確認をする

$ python
>>> import MySQLdb

Tracebackが出力されなければ、設定は成功です。


現在のポスト数 59 / 100