我有一个包含语句 create tbl2 as select * from tbl;
的 SQL 脚本。
这个语句在 Docker MySQL 5.7(当前版本为 5.7.19)上运行正常,即使启用了 enforce-gtid-consistency。相关的 docker compose yml 中的行如下:
image: mysql:5.7
command: --gtid-mode=ON --enforce-gtid-consistency=true
即使文档清楚地指定了以下内容不能与 --enforce-gtid-consistency 选项一起使用,由于只有在事务安全语句被记录时,才能使用该选项进行日志记录,因此以下操作不能与该选项一起使用:
CREATE TABLE ... SELECT 语句。
在 Google Cloud MySQL 实例上,相同的语句会失败,并出现“ERROR 1786 (HY000): Statement violates GTID consistency: CREATE TABLE ... SELECT.”的错误消息。
"show variables like '%gtid%'" 在 Docker MySQL 和 Google Cloud 实例上返回相同的结果(并且两者都开启了 enforce_gtid_consistency)。