Mysql UDF установлен (но не существует?) - PullRequest
8 голосов
/ 18 марта 2012

Вот сумасшедший:

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?

ОТВЕТ: Вот ответ, основанный на подсказке Барона ниже:

Из 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.Перкона искал в / usr / lib / plugin

Решение было простым - я просто создал символическую ссылку в / usr / lib на каталог / usr / lib / mysql / plugin следующим образом:

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

Альт!- теперь все загружается нормально.

1 Ответ

2 голосов
/ 15 декабря 2013

Я многое понимаю. Для решения этой проблемы вам необходимо:

DELETE FROM mysql.func WHERE name='PREG_REPLACE'

А затем приступите к заявлению CREATE FUNCTION....

...