问题描述

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.

 

解决方法

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

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

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

 

适用于

  • 云数据库 RDS MySQL 版

 

如果您的问题仍未解决,您可以在阿里云社区提交工单联系阿里云技术支持。