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版