MySQL Error number: 4066; Symbol: ER_CHANGE_REP_SOURCE_CANT_DISABLE_REQ_ROW_FORMAT_WITH_GTID_ONLY; SQLSTATE: HY000

文档解释

Error number: 4066; Symbol: ER_CHANGE_REP_SOURCE_CANT_DISABLE_REQ_ROW_FORMAT_WITH_GTID_ONLY; SQLSTATE: HY000

Message: REQUIRE_ROW_FORMAT cannot be disabled for replication channel ‘%s’ when GTID_ONLY=1.

错误说明

MySQL出现错误4066,这个错误也被称为ER_CHANGE_REP_SOURCE_CANT_DISABLE_REQ_ROW_FORMAT_WITH_GTID_ONLY,SQLSTATE是HY000。这意味着一个未指定的会话尝试从会话中禁用要求的执行格式,但GTID模式已经启用。本错误是版本5.7.9引入的。

常见案例

当MySQL复制代理尝试禁用会话执行格式时,会出现此错误。此错误在设置新主机时特别常见,对必须满足唯一性要求的master-slave复制安装也特别常见。

解决方法

最简单的解决办法是禁用GTID模式,然后再禁用会话格式。这可以通过在my.cnf文件指定相应设置变量或运行SET多节点语句来实现。

例如,可以在my.cnf配置文件中添加:

gtid-mode=OFF

transaction-isolation=READ-COMMITTED

或者,可以在会话中运行以下命令:

SET GLOBAL gtid_mode = OFF;

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

禁用GTID模式确保记录的原子性,避免在master-slave复制中出现重复的记录。

另外,可以尝试通过将gtid_mode设置为ON_PERMISSIBILITY并不断尝试重启MySQL来更轻松地禁用会话格式,不过我觉得这种情况下更容易出错。

无论哪种办法,都可以解决ER_CHANGE_REP_SOURCE_CANT_DISABLE_REQ_ROW_FORMAT_WITH_GTID_ONLY错误。

你可能感兴趣的