2014-09-08 13 views
5

Próbuję utworzyć wyzwalacz inspekcji, wstawiając dane blob jako typ danych longtext.Wyzwalanie audytu, wstawianie obiektu typu blob jako tekst długi

Kiedy używam select Widzę zawartość obrazu, ale kiedy wstawiam w tym samym formacie, pojawi się jako pusty.

Works: dane wyświetlić zawartość surowego obrazu

select cast(my_image as char) as data from MyTable 

nie działa: kolumna danych pojawia się puste (0byte)

insert into MyAuditTable (data) values (cast(NEW.my_image as char)) 

Aktualizacja: 12 września Próbowałem przejść przez funkcję, mając nadzieję, że wyraźnie określić typ, a następnie będzie, ale nie ma szczęścia albo

CREATE FUNCTION `BLOB2TXT`(dablob LONGBLOB) RETURNS LONGTEXT 
    NO SQL 
    DETERMINISTIC 
BEGIN 
     RETURN CAST(dablob AS CHAR CHARACTER SET utf8); 
END 

Opublikowałem swój projekt na Github, jeśli ktoś chce spojrzeć lub chce użyć tego, co mam. Jesteś zawsze mile widziane :)

https://github.com/hotmit/mysql-sp-audit

Teraz jedyną rzeczą, która daje mi pewną nadzieję jest Hex (blob) ale kiedy UNHEX() dane nie są czytelne.

+0

spróbuj z CONVERT()? – catalinetu

+0

Próbowałem obsady, konwertowania, wstawiania, jak jest. Wszystkie kończą jako puste. –

+0

proszę wyjaśnić, która tabela reprezentuje MyTable i które pola są datami, my_image w twoim projekcie github? jaki plik do obejrzenia? –

Odpowiedz

1

Możesz spróbować wykonać następujące czynności:

INSERT INTO zaudit_meta(audit_id, col_name) 
SELECT 0 
    ,CAST(my_image AS CHAR) 

Jeśli zapytanie SELECT działa poprawnie, to rozwiązanie powinno działać.

Mam nadzieję, że to pomoże.

+0

Joël, próbowałem tego i nadal otrzymuję opróżnione pole varchar. –

+0

@DuD. Czy możesz potwierdzić, że jeśli usuniesz instrukcję INSERT z mojego zapytania, uzyskasz pożądany wynik? –

+0

Joël, kiedy używam opcji select, wyświetlana jest zawartość zgodnie z oczekiwaniami. –

Powiązane problemy