Error number: 3745; Symbol: ER_TEMP_TABLE_PREVENTS_SWITCH_SESSION_BINLOG_FORMAT; SQLSTATE: HY000
Message: Changing @@session.binlog_format is disallowed when the session has open temporary table(s). You could wait until these temporary table(s) are dropped and try again.
错误说明
ER_TEMP_TABLE_PREVENTS_SWITCH_SESSION_BINLOG_FORMAT 是MySQL的一个错误,其中ER是Error的缩写。它指的是用于存储会话的临时表不允许更改 binlog_format 。它是指在使用临时表的会话中,会话的 binlog_format 隐式设置为 ROW 而不是会话中设置的值。
常见案例
当binlog_format设置为MIXED或者STATEMENT时,在一个会话中使用临时表操作,会发现MySQL抛出错误 ER_TEMP_TABLE_PREVENTS_SWITCH_SESSION_BINLOG_FORMAT 。
解决方法
要解决这个错误,首先需要重新设置 binlog_format 各会话中的值,将其设置为 ROW 。通常情况下,必须在使用临时表之前设置 binlog_format 。然后,确保设置的 binlog_format 和会话中设置的 binlog_format 值是相同的,从而避免在MySQL中出现 ER_TEMP_TABLE_PREVENTS_SWITCH_SESSION_BINLOG_FORMAT 错误。