2014-09-08 1 views
5

Я пытаюсь создать триггер аудита, вставляя данные blob как longtext datatype.Audit Trigger, Insert Blob As LongText

Когда я использую select, я вижу содержимое изображения, но когда я вставляю его в том же формате, он отображается как пустой.

Работы: данные отображения необработанного изображения

select cast(my_image as char) as data from MyTable 

не работает: столбец данных выглядит пустой (0Byte)

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

обновление: 12 сентября Я попытался передать его через функцию, надеясь явно указать тип, который он примет, но не повезло там либо

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

Я опубликовал свой проект на github, если кто-то хочет взглянуть или захочет использовать то, что у меня есть. Вы всегда можете :)

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

Сейчас единственное, что дает мне некоторую надежду на то, является Hex (BLOB), но когда я UNHEX() данные не читаемыми.

+0

Вы попробовали его с CONVERT()? – catalinetu

+0

Я пробовал использовать, конвертировать, вставлять как есть. Все они заканчиваются пустым. –

+0

проясните, какая таблица представляет MyTable и какие поля - дата, my_image в вашем проекте github? какой файл посмотреть? –

ответ

1

Вы можете попробовать следующее:

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

Если SELECT запрос работает правильно, это решение должно работать.

Надеюсь, это поможет.

+0

Joël, я попробовал это, и я все еще получаю опустошенное поле varchar. –

+0

@DuD. Можете ли вы подтвердить, что если вы удалите инструкцию INSERT моего запроса, вы получите желаемый результат? –

+0

Joël, когда я просто использую select, он отображает содержимое, как ожидалось. –