Bug #91812 Slave replay stops because of explicit_defaults_for_timestamp between B and C
Submitted: 27 Jul 2018 2:52 Modified: 7 Aug 2018 10:44
Reporter: kfpanda kf Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server: Replication Severity:S2 (Serious)
Version:5.7.22 OS:Any
Assigned to: Bogdan Kecman CPU Architecture:Any

[27 Jul 2018 2:52] kfpanda kf
Description:
I get the following error on the slave and replay stops:

ERROR: The system variable explicit_defaults_for_timestamp cannot be set when there is an ongoing transaction.

When I used the tool mysqlbinlog to parse binlog, I found that the parameter explicit_defaults_for_timestamp was set between the begin and commit.

I have yet to figure out how to reproduce the problem reliably.

How to repeat:

Here is the binlog entry that fails:
----------------------------------------------
SET @@session.explicit_defaults_for_timestamp=0/*!*/;
BEGIN
/*!*/;
# at 1246
#180726  2:26:46 server id 1532572195  end_log_pos 1404 CRC32 0x5bb4f8f1        Query   thread_id=286   exec_time=2937  error_code=0
SET TIMESTAMP=1532572006/*!*/;
SET @@session.explicit_defaults_for_timestamp=0/*!*/;
COMMIT
------------------------------------------------
[7 Aug 2018 9:12] kfpanda kf
I don't know if it's related to explicit_defaults_for_timestamp=ON in my.cnf´╝č
Did you find the reason?
[7 Aug 2018 10:44] Bogdan Kecman
I cannot reproduce this. I assume you have an application connecting to your mysqld doing this. But this does not look like a bug.

all best
Bogdan