RDS for 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版本支持事务中使用临时表,且binlog_format必须设置为ROW根式(RDS默认ROW格式)。
您可以根据实际情况,选择如下的解决方法。
create temporary table
语句更改为create table
,使用普通表替代临时表。autocommit=1
。