Mysql :5.7
总日志:1
log_output :表
我编写了一些代码,使用java将图像存储在表(tbl_attachment_mst).的blob列中。我的常规日志设置是打开的,并被配置为写入“table”。
每当我向tbl_attachment_mst添加图像时,mysql都会使用_binary(“一些不可读字符不确定这是什么”)将其记录在mysql.general_log表中。
我无意中丢失了表tbl_attachment_mst的内容。是否可以从mysql.generaL_log表中恢复数据??
在尝试执行存储在mysql.general_log中的查询时,我想我对字符集有一些问题。
(来自评论)
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')) 发布于 2020-06-29 17:08:22
使用下面的一组查询,我能够获得在特定时间插入到数据库中的确切数据……
SELECT argument INTO @sql FROM mysql.general_log limit 1;
PREPARE sql_query FROM @sql;
EXECUTE sql_query;这些查询会将数据插入到tbl_attachment_mst中.
发布于 2020-06-28 23:12:13
快点抓住它。我怀疑general_log,作为一张桌子,在某种程度上会很快被冲红。
它就像一个表一样工作,所以SELECTs可以工作。但是,除非关闭了常规日志,否则SELECTs会进入常规日志。
建议执行SELECT ... HEX(col) ...以避免不可打印的字符。
请提供更多的细节,以便我可以尝试模拟,看看什么是最好的。
SHOW CREATE TABLE
An approximation of the INSERT statement (or whatever was involved)如果抓取的十六进制是有用的,您可以使用这样的方法来逆转这些步骤:
INSERT ... VALUES (... UNHEX(hex_string) ... )https://stackoverflow.com/questions/62584872
复制相似问题