2012-03-18 12 views
8

Ecco un pazzo uno:Mysql UDF sia installato (ma non esiste?)

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 

Um .... che in realtà è abbastanza divertente ....

Il vero problema è che il la funzione non è più riconosciuta nelle query. Ho provato a ri-compilare, a reinstallare, a riavviare, ecc. UDF è da qui: http://www.mysqludf.org/lib_mysqludf_preg/index.php

Questo è seguito dopo il passaggio a percona 5.5 da mysql. UDF ha funzionato bene in mysql.

domanda è: Come faccio ad avere il PREG UDF al lavoro dopo l'aggiornamento da MySQL a Percona 5.5?

RISPOSTA: Ecco la risposta in base a punta del barone di seguito:

Dal 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 sembra guardare in una directory diversa rispetto al mio standard di MySql installare.

MySql cerca tutti i plugin in/usr/lib/mysql/plug-in. Percona stava guardando in/usr/lib/plugin

La soluzione è stata semplice - Ho appena creato un link simbolico in/usr/lib alla usr/lib/mysql/directory/plugin come segue:

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

Viola! - Tutto funziona bene ora.

risposta

2

Questo lo capisco molto. Per risolvere questo problema è necessario:

DELETE FROM mysql.func WHERE name='PREG_REPLACE' 

E poi procedere con la CREATE FUNCTION... dichiarazione.