安装了Mysql UDF(但不存在?)

时间:2012-03-18 00:52:46

标签: mysql user-defined-functions percona

这是一个疯狂的:

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

中提琴! - 现在一切都很好。

1 个答案:

答案 0 :(得分:2)

我得到了很多。要解决这个问题,你应该:

DELETE FROM mysql.func WHERE name='PREG_REPLACE'

然后继续执行CREATE FUNCTION...声明。