2012-03-18 28 views
8

这是一个疯狂的一个:Mysql的UDF安装(但不存在?)

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中工作正常。

的问题是:我如何获得预浸UDF从MySQL升级到5.5的Percona工作后?

答:下面是基于男爵的尖端下方的答案:

从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的/插件的所有插件。 的Percona一直在寻找在/ usr/lib中/插件

的解决方案很简单 - 我刚刚创建符号链接在/ usr/lib目录到/ usr/lib中/ MySQL的/插件目录如下:

[email protected]:/usr/lib/plugin$ sudo ln -s /usr/lib/mysql/plugin ./plugin 

中提琴! - 现在一切正常。

回答

2

我明白了很多。为了解决这个问题,你应该:

DELETE FROM mysql.func WHERE name='PREG_REPLACE' 

然后用你的CREATE FUNCTION...声明进行。