Flink CDC:io.debezium.connector.mysql.SnapshotReader] - Can‘t call rollback when autocommit=true

项目场景:

Flink CDC实时同步Mysql数据

问题描述:

[io.debezium.connector.mysql.SnapshotReader] - Failed due to error: Aborting snapshot due to error when last running ‘UNLOCK TABLES’: Can’t call rollback when autocommit=true:

2022-02-26 16:31:30,002 ERROR [io.debezium.connector.mysql.SnapshotReader] - Failed due to error: Aborting snapshot due to error when last running 'UNLOCK TABLES': Can't call rollback when autocommit=true
org.apache.kafka.connect.errors.ConnectException: Can't call rollback when autocommit=true Error code: 0; SQLSTATE: 08003.
	at io.debezium.connector.mysql.AbstractReader.wrap(AbstractReader.java:241)
	at io.debezium.connector.mysql.AbstractReader.failed(AbstractReader.java:218)
	at io.debezium.connector.mysql.SnapshotReader.execute(SnapshotReader.java:857)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLNonTransientConnectionException: Can't call rollback when autocommit=true
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
	at com.mysql.cj.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:1833)
	at io.debezium.connector.mysql.SnapshotReader.execute(SnapshotReader.java:766)
	... 3 more

原因分析:

需要关闭链接的自动事务提交

解决方案:

connection.setAutoCommit(false);

版权声明:本文为qq_36369061原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。