问题描述
RDS 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 . |
解决方法
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
您可以根据实际情况,选择如下的解决方法。
- 将
create temporary table
语句更改为create table
,使用普通表替代临时表。 - 修改代码,将临时表的创建和删除操作放在事务外,并且保证会话的参数为
autocommit=1
。
适用于
- 云数据库 RDS MySQL 版
如果您的问题仍未解决,您可以在阿里云社区提交工单联系阿里云技术支持。