This article addresses the error encountered during extraction when using log-based incremental replication for MySQL integration:
[main] tap-hp-mysql.sync-strategies.binlog - Fatal Error Occurred - <ColumnName> - decimal SQL type for value type class clojure.core$val is not implemented.
Resolution
There are two recommended approaches:
Option 1: Enable Commit Order Preservation
Run the following command in your MySQL instance:
SET GLOBAL replica_preserve_commit_order = ON;
Then, reset the affected table(s) through the integration settings.
Option 2: Validate Replication Settings
Ensure that either:
replica_preserve_commit_order (MySQL 8.0+), or
slave_preserve_commit_order (older versions)
is enabled. These settings maintain commit order on multi-threaded replicas, preventing gaps and inconsistencies.
How to Check if Setting is Enabled
Run:
SHOW GLOBAL VARIABLES LIKE 'replica_preserve_commit_order';
Expected Output:
Variable_name
Value
replica_preserve_commit_order
ON
For older versions:
SHOW GLOBAL VARIABLES LIKE 'slave_preserve_commit_order';
For more information, reference MySQL Documentation
When using log-based incremental replication, Stitch reads changes from MySQL’s binary log (binlog). This error occurs because the source database provides events out of order, which leads to mismatched data types during extraction. In this case, the extraction encounters a decimal SQL type where the value type is unexpected.
Why does this happen?
Non-transactional DML statements that do not guarantee ordering.
Misconfigured or inconsistent replication setup.
Multi-threaded replication without commit order preservation, causing commit gaps and inconsistencies.