これが表示された場合、MySQLdb のインストール時に何らかの間違いを犯した可能性があります。README を読み直してください (または読んでください)。_mysql は、MySQL クライアント ライブラリとやり取りする低レベルの C モジュールです。
過去のさまざまなバージョンの MySQLdb には、「奇妙な」プラットフォームでのビルドの問題がありました。この場合の「奇妙な」は「Linux ではない」という意味ですが、通常、BSD や Mac OS X を含む Unix/POSIX プラットフォームでは問題はありません。 MySQLの。1.2.1 は、これらの問題のすべてではないにしてもほとんどを解決しますが、セットアップが MySQL の場所と含めるライブラリを認識できるように、構成ファイルを編集する必要があります。
ImportError: libmysqlclient_r.so.14: cannot open shared object file: No such file or directory
.so の後の数字は異なる場合がありますが、これは、あるバージョンの MySQL に対してコンパイルされたバージョンの MySQLdb があり、それを別のバージョンに対して実行しようとしていることを意味します。共有ライブラリのバージョンは、メジャー リリース間で変更される傾向があります。
解決策: MySQLdb を再構築するか、一致するバージョンの MySQL を取得します。
これを引き起こす可能性のある別のこと: MySQL ライブラリがシステム パス上にない可能性があります。
ソリューション:
set the LD_LIBRARY_PATH environment variable so that it includes the path to the MySQL libraries.
set static=True in site.cfg for static linking
reconfigure your system so that the MySQL libraries are on the default loader path. In Linux, you edit /etc/ld.so.conf and run ldconfig. For Solaris, see Linker and Libraries Guide.
ImportError: ld.so.1: python: fatal: libmtmalloc.so.1: DF_1_NOOPEN tagged object may not be dlopen()'ed
これは、Solaris の奇妙なものです。どういう意味ですか?何も思いつきません。ただし、Python と MySQL の間に何らかのコンパイラまたは環境の不一致がある場合、このようなことが発生する可能性があります。たとえば、一部の商用システムでは、独自のコンパイラでコンパイルされたコードと、GCC でコンパイルされたコードがある場合があります。それらは常にかみ合うわけではありません。これに遭遇する 1 つの方法は、さまざまなベンダーからバイナリ パッケージを入手することです。
解決策: ソースから Python または MySQL (あるいは両方) を再構築します。
ImportError: dlopen(./_mysql.so, 2): Symbol not found: _sprintf$LDBLStub Referenced from: ./_mysql.so Expected in: dynamic lookup
これは Mac OS X のものです。コンパイラの不一致だったようですが、今回は GCC の 2 つの異なるバージョン間で発生しました。GCC のほぼすべてのメジャー リリースでは、なんらかの理由で ABI が変更されているようです。たとえば、GCC-3.3 と GCC-4.0 でコンパイルされたコードをリンクすると、問題が発生する可能性があります。