8

ここにクレイジーなものがあります:

mysql> CREATE FUNCTION PREG_REPLACE RETURNS STRING SONAME 'lib_mysqludf_preg.so';
ERROR 1125 (HY000): Function 'PREG_REPLACE' already exists
mysql> DROP FUNCTION preg_replace;
ERROR 1305 (42000): FUNCTION (UDF) preg_replace does not exist

うーん……実に面白い……。

本当の問題は、関数がクエリで認識されなくなったことです。再コンパイル、再インストール、再起動などを試みました-喜びはありません。UDF はこちらから: http://www.mysqludf.org/lib_mysqludf_preg/index.php

これは、mysql から percona 5.5 に切り替えた後に続きました。UDF は mysql で正常に動作しました。

質問: mysql から percona 5.5 にアップグレードした後、PREG UDF を機能させるにはどうすればよいですか?

回答: 以下は、Baron のヒントに基づいた回答です。

mysql error.log から:

120319  9:32:06 Percona XtraDB (http://www.percona.com) 1.1.8-rel24.1 started; log sequence number 1547303885
120319  9:32:06 [ERROR] Can't open shared library 'lib_mysqludf_preg.so' (errno: 0 /usr/lib/plugin/lib_mysqludf_preg.so: cannot open shared object file: No such file or directory)

Percona は、標準の MySql インストールとは異なるディレクトリを参照しているようです。

MySql は /usr/lib/mysql/plugin ですべてのプラグインを探します。Percona は /usr/lib/plugin を探していました

解決策は簡単でした。次のように、/usr/lib に /usr/lib/mysql/plugin ディレクトリへのシンボリック リンクを作成しました。

me@host:/usr/lib/plugin$ sudo ln -s /usr/lib/mysql/plugin ./plugin

ビオラ!-- すべてが正常に読み込まれるようになりました。

4

1 に答える 1