{"record":{"id":"afe6f638cf856dc2","repo":"alibaba/canal","slug":"unsupported-binlogimage-image","errorCode":null,"errorMessage":"Unsupported BinlogImage  + image","messagePattern":"Unsupported BinlogImage  \\+ image","errorType":"exception","errorClass":"CanalParseException","httpStatus":null,"severity":"error","filePath":"parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/MysqlEventParser.java","lineNumber":117,"sourceCode":"                }\n\n                if (!found) {\n                    throw new CanalParseException(\"Unsupported BinlogFormat \" + format);\n                }\n            }\n\n            if (supportBinlogImages != null && supportBinlogImages.length > 0) {\n                BinlogImage image = ((MysqlConnection) metaConnection).getBinlogImage();\n                boolean found = false;\n                for (BinlogImage supportImage : supportBinlogImages) {\n                    if (supportImage != null && image == supportImage) {\n                        found = true;\n                        break;\n                    }\n                }\n\n                if (!found) {\n                    throw new CanalParseException(\"Unsupported BinlogImage \" + image);\n                }\n            }\n\n            if (tableMetaTSDB != null && tableMetaTSDB instanceof DatabaseTableMeta) {\n                ((DatabaseTableMeta) tableMetaTSDB).setConnection(metaConnection);\n                ((DatabaseTableMeta) tableMetaTSDB).setFilter(eventFilter);\n                ((DatabaseTableMeta) tableMetaTSDB).setBlackFilter(eventBlackFilter);\n                ((DatabaseTableMeta) tableMetaTSDB).setSnapshotInterval(tsdbSnapshotInterval);\n                ((DatabaseTableMeta) tableMetaTSDB).setSnapshotExpire(tsdbSnapshotExpire);\n                ((DatabaseTableMeta) tableMetaTSDB).init(destination);\n            }\n\n            tableMetaCache = new TableMetaCache(metaConnection, tableMetaTSDB);\n            ((LogEventConvert) binlogParser).setTableMetaCache(tableMetaCache);\n        }\n    }\n\n    protected void afterDump(ErosaConnection connection) {","sourceCodeStart":99,"sourceCodeEnd":135,"githubUrl":"https://github.com/alibaba/canal/blob/87be50e87686a3e8af08c368d0e1ffd1f59eb04a/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/MysqlEventParser.java#L99-L135","documentation":"Symmetric to the binlog_format gate: when supportBinlogImages is configured, preDump() reads binlog_row_image and throws CanalParseException if it is not in the allowed set. canal works best with FULL or MINIMAL row images; this guard lets operators forbid formats that would omit needed columns.","triggerScenarios":"canal.instance.supportBinlogImages restricts the set and the master's binlog_row_image value falls outside it (e.g. NOBLOB or MINIMAL when only FULL is allowed).","commonSituations":"Master tuned to binlog_row_image=MINIMAL to save space, while canal's config demands FULL to receive all column values.","solutions":["Align the master: `SET GLOBAL binlog_row_image = 'FULL'` (or whatever canal requires).","Adjust supportBinlogImages to include the master's current image if MINIMAL suffices for your consumers.","Verify with `SHOW VARIABLES LIKE 'binlog_row_image'` after any server-side change."],"exampleFix":"-- align master image with canal's allowed set\nSET GLOBAL binlog_row_image = 'FULL';","handlingStrategy":"validation","validationCode":"BinlogImage actual = connection.getBinlogImage();\nboolean ok = false;\nfor (BinlogImage allowed : supportBinlogImages) {\n    if (allowed == actual) { ok = true; break; }\n}\nif (!ok) {\n    throw new IllegalStateException(\"Master binlog_row_image \" + actual + \" not in allowed \" + Arrays.toString(supportBinlogImages));\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Align master binlog_row_image with canal's supportBinlogImages.","Use FULL when consumers need all columns.","Re-verify after any master tuning or failover."],"tags":["mysql","binlog-image","validation","canal-parse"],"backgroundTag":null,"analyzedSha":"87be50e87686a3e8af08c368d0e1ffd1f59eb04a","analyzedAt":"2026-08-14T04:30:11.918Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}