Open xylanh opened 12 months ago
描述 利用 --masking=1 参数获取查询语句中的字段信息,若查询语句中包含有子查询时, 会出现某些字段不存在的错误
重现
CREATE TABLE `A` ( `id` int(11) NOT NULL AUTO_INCREMENT, `lid` int(11) DEFAULT '0', `zid` int(11) DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE B ( id int(11) NOT NULL AUTO_INCREMENT, named varchar(35) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
B
id
named
- 需获取字段信息的查询SQL
select B.id, tab.named from ( select A.lid, B.named from A left join B on A.zid=B.id ) AS tab left join B on B.id=tab.lid
上述查询 SQL 在获取查询字段信息时会 出现 "Column 'tab.named' not existed" 错误 . 1. 假如把 tab.named 改成 named (即去掉 tab. 前缀)则能正确获取到对应的字段信息 2. 假如 A 表中也存在 named 字段,则上述SQL中 tab.named 字段获取的字段的信息是 A 表中对应的字段信息. (正确的应该是B表对应的字段信息) **环境** - 数据库: mysql - 数据库版本: 5.6.40 - goInception版本: v1.3.0-72, v1.3.0-76 **参数** 请求参数如下
/--user={};--password={};--host={};--port={};--db={};--ignore_warnings=1;--masking=1;/
描述 利用 --masking=1 参数获取查询语句中的字段信息,若查询语句中包含有子查询时, 会出现某些字段不存在的错误
重现
CREATE TABLE
B
(id
int(11) NOT NULL AUTO_INCREMENT,named
varchar(35) DEFAULT NULL, PRIMARY KEY (id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;select B.id, tab.named from ( select A.lid, B.named from A left join B on A.zid=B.id ) AS tab left join B on B.id=tab.lid
/--user={};--password={};--host={};--port={};--db={};--ignore_warnings=1;--masking=1;/