中国站
帮助中心 > 数据库 > 云数据库MySQL > 常见问题 > MySQL 5.6版本GTID特性对临时表限制的处理方法

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

问题描述

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

  1. 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版本支持事务中使用临时表,且binlog_format必须设置为ROW根式(RDS默认ROW格式)。

解决方法

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

  • create temporary table语句更改为create table,使用普通表替代临时表。
  • 修改代码,将临时表的创建和删除操作放在事务外,并且保证会话的参数为autocommit=1