Search code examples
mysqldatabaseloggingblobrecovery

Mysql General Log Retrieve BLOB Content


Mysql :5.7

General Log: 1

log_output : Table

I have written some code using java to store images in a blob column of a table (tbl_attachment_mst). My General Log settings are turned on and is configured to write to 'table'.

Whenever i add an image to tbl_attachment_mst , mysql does log it in the mysql.general_log table with _binary('some unreadable characters not sure what this is').

I have accidently lost contents of the table tbl_attachment_mst . Is it possible to recover my data from the mysql.generaL_log table??

I think i am having some issue with the character set while trying to execute the query that is stored in mysql.general_log.

(From comment)

CREATE TABLE tbl_attachment_mst (
    attachment_id int(11) NOT NULL AUTO_INCREMENT, 
    file_name varchar(200) DEFAULT NULL, 
    created_date datetime DEFAULT NULL, 
    activate_flag tinyint(4) DEFAULT NULL, 
    file_id int(11) DEFAULT NULL, 
    type varchar(300) DEFAULT NULL, 
    attachment_asblob longblob, 
    PRIMARY KEY (attachment_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

insert into tbl_attachment_mst values
     (default,'test.jpg',sysdate(),1,1,'Type',
      _binary('some characters here')) 

Solution

  • using the below set of queries, i was able to get the exact data that was inserted into the db at that particular time.....

    SELECT argument INTO @sql FROM mysql.general_log limit 1;    
    PREPARE sql_query FROM @sql;    
    EXECUTE sql_query;
    

    These queries would insert the data back into the tbl_attachment_mst...