Вот сумасшедший:
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
Это последовало после перехода на percona 5.5 с mysql. UDF отлично работал в mysql.
Вопрос:Как заставить работать PREG UDF после обновления mysql до percona 5.5?
ОТВЕТ: Вот ответ, основанный на приведенном ниже совете Барона:
Из файла error.log mysql:
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
Виола! - теперь все загружается нормально.