RDS MySQL 5.6 版本GTID特性对临时表限制的处理方法

问题描述

RDS MySQL 5.6版本中,GTID特性对临时表进行了限制,导致报错内容如下。

When @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1, the statements CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can be executed in a non-transactional context only, and require that AUTOCOMMIT = 1.
说明

开启GTID后,5.7和5.8版本支持事务中使用临时表,且binlog_format必须设置为ROW格式(RDS默认ROW格式)。

解决办法

您可以根据实际情况,选择如下的解决方法。

  • create temporary table语句更改为create table,使用普通表替代临时表。

  • 修改代码,将临时表的创建和删除操作放在事务外,并且保证会话的参数为autocommit=1

适用于

云数据库RDS MySQL版