Mysql 常规日志检索 BLOB 内容
Mysql General Log Retrieve BLOB Content
Mysql:5.7
一般日志:1
log_output : Table
我使用 java 编写了一些代码,将图像存储在 table (tbl_attachment_mst) 的 blob 列中。
我的常规日志设置已打开并配置为写入“table”。
每当我将图像添加到 tbl_attachment_mst 时,mysql 都会将其记录在 mysql.general_log table 与 _binary('some unreadable characters not sure what this is').
我不小心丢失了 table tbl_attachment_mst 的内容。是否可以从 mysql.generaL_log table 中恢复我的数据??
我想我在尝试执行存储在 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'))
抓紧时间。我怀疑 general_log 作为 table 会以某种方式快速变红。
它就像 table 一样工作,所以 SELECTs
工作。但是,您的 SELECTs
会进入通用日志,除非您已将其关闭。
建议做 SELECT ... HEX(col) ...
以避免 unprintable 字符。
请提供更多详细信息,以便我可以尝试对其进行模拟,看看哪种效果最好。
SHOW CREATE TABLE
An approximation of the INSERT statement (or whatever was involved)
如果抓取的十六进制有用,你可以使用类似这样的东西来反转步骤:
INSERT ... VALUES (... UNHEX(hex_string) ... )
使用下面的一组查询,我能够获得在特定时间插入数据库的确切数据......
SELECT argument INTO @sql FROM mysql.general_log limit 1;
PREPARE sql_query FROM @sql;
EXECUTE sql_query;
这些查询会将数据插入回 tbl_attachment_mst...
Mysql:5.7
一般日志:1
log_output : Table
我使用 java 编写了一些代码,将图像存储在 table (tbl_attachment_mst) 的 blob 列中。 我的常规日志设置已打开并配置为写入“table”。
每当我将图像添加到 tbl_attachment_mst 时,mysql 都会将其记录在 mysql.general_log table 与 _binary('some unreadable characters not sure what this is').
我不小心丢失了 table tbl_attachment_mst 的内容。是否可以从 mysql.generaL_log table 中恢复我的数据??
我想我在尝试执行存储在 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'))
抓紧时间。我怀疑 general_log 作为 table 会以某种方式快速变红。
它就像 table 一样工作,所以 SELECTs
工作。但是,您的 SELECTs
会进入通用日志,除非您已将其关闭。
建议做 SELECT ... HEX(col) ...
以避免 unprintable 字符。
请提供更多详细信息,以便我可以尝试对其进行模拟,看看哪种效果最好。
SHOW CREATE TABLE
An approximation of the INSERT statement (or whatever was involved)
如果抓取的十六进制有用,你可以使用类似这样的东西来反转步骤:
INSERT ... VALUES (... UNHEX(hex_string) ... )
使用下面的一组查询,我能够获得在特定时间插入数据库的确切数据......
SELECT argument INTO @sql FROM mysql.general_log limit 1;
PREPARE sql_query FROM @sql;
EXECUTE sql_query;
这些查询会将数据插入回 tbl_attachment_mst...