gpt4 book ai didi

mysql - 即使使用 enforce-gtid-consistency 创建表作为选择工作

转载 作者:可可西里 更新时间:2023-11-01 08:39:01 25 4
gpt4 key购买 nike

我有一个包含语句 create tbl2 as select * from tbl;

的 sql 脚本

此语句适用于版本为 5.7(当前为 5.7.19)的 docker mysql,即使启用了 enforce-gtid-consistency。 docker compose yml 中的相关行是:

image: mysql:5.7
command: --gtid-mode=ON --enforce-gtid-consistency=true

即使文档明确指出:

Since only transactionally safe statements can be logged when --enforce-gtid-consistency is enabled, it follows that the operations listed here cannot be used with this option:

CREATE TABLE ... SELECT statements

同一语句因 ERROR 1786 (HY000) 失败:语句违反 GTID 一致性:CREATE TABLE ... SELECT。 在谷歌云 mysql 实例上。

show variables like '%gtid%' 在 docker mysql 和 google cloud 实例上返回相同的结果(并且 enforce_gtid_consistency 在两者中都启用)。

最佳答案

您看到失败的主要原因是容器数据库中的 log-bin 为 NULL,尽管 gtid_mode 已打开且 enforce_gtid_consistency 已打开。所以你必须运行带有 log-bin set 的容器,另外设置这个也需要设置 server-id。下面是一个运行容器的示例,您应该能够在其中重现错误 - ”错误 1786 (HY000):语句违反 GTID 一致性:CREATE TABLE ... SELECT。"

docker run -d --name=my-mysql --env="MYSQL_ROOT_PASSWORD=rootpassword123"--publish 3306:3306 --volume=/u01/mysql:/var/lib/mysql mysql/mysql-server: 5.7.20 --gtid_mode=ON --enforce_gtid_consistency=ON --log-bin=mysql-bin --master-info-repository=table --relay-log-info-repository=table --server-id=1

干杯拉吉

关于mysql - 即使使用 enforce-gtid-consistency 创建表作为选择工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47408361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com