SELECTt1.TABLE_SCHEMA,t1.TABLE_NAME,t1.COLUMN_NAME,t1.DATA_TYPEFROMINFORMATION_SCHEMA.COLUMNS t1INNER JOIN (-- 子查询:先找出符合条件(特定类型列数 >= 2)的表SELECTTABLE_SCHEMA,TABLE_NAMEFROMINFORMATION_SCHEMA.COLUMNSWHEREDATA_TYPE IN ('blob', 'mediumblob', 'longblob', 'json', 'text', 'MEDIUMTEXT', 'LONGTEXT', 'geometry')AND TABLE_SCHEMA IN ('xxx', 'xxxx') -- 请替换为实际库名GROUP BYTABLE_SCHEMA,TABLE_NAMEHAVINGCOUNT(*) >= 2) t2 ON t1.TABLE_SCHEMA = t2.TABLE_SCHEMA AND t1.TABLE_NAME = t2.TABLE_NAMEWHERE-- 外层再次过滤类型,确保只列出造成风险的列t1.DATA_TYPE IN ('blob', 'mediumblob', 'longblob', 'json', 'text', 'MEDIUMTEXT', 'LONGTEXT', 'geometry');
SELECTTABLE_SCHEMA,TABLE_NAME,COUNT(*) as risky_column_count,GROUP_CONCAT(COLUMN_NAME) as risky_columns -- 可选:将列名合并显示在一行FROMINFORMATION_SCHEMA.COLUMNSWHEREDATA_TYPE IN ('blob', 'mediumblob', 'longblob', 'json', 'text', 'MEDIUMTEXT', 'LONGTEXT', 'geometry')AND TABLE_SCHEMA IN ('xxx', 'xxxx')GROUP BYTABLE_SCHEMA,TABLE_NAMEHAVINGCOUNT(*) >= 2;
alter table xx engine = innodb; 的方法进行修复。为了避免锁表导致的业务影响,建议通过 pt-osc 等工具在业务低峰期进行修复。文档反馈