#### 17.5.1.29复制过程中的副本错误

[](<>)[](<>)[](<>)[](<>)

如果一条语句在源和副本上都产生相同的错误（相同的错误代码），则会记录该错误，但复制会继续。

如果一条语句在源和副本上产生不同的错误，复制SQL线程将终止，副本将向其错误日志中写入一条消息，并等待数据库管理员决定如何处理该错误。这包括语句在源或副本上产生错误的情况，但不能同时在源或副本上产生错误。要解决此问题，请手动连接到复制副本并确定问题的原因。[`显示副本状态`](show-replica-status.html)（或MySQL 8.0.22之前的版本，[`显示奴隶身份`](show-slave-status.html))这很有用。然后解决问题并运行[`开始复制`](start-replica.html)（或MySQL 8.0.22之前的版本，[`启动从机`](start-slave.html))。例如，在重新启动复制副本之前，可能需要创建一个不存在的表。

笔记

如果复制副本的错误日志中记录了临时错误，则不必采取引用的错误消息中建议的任何操作。临时错误应由重试事务的客户端处理。例如，如果复制SQL线程记录了与死锁相关的临时错误，则不需要在复制副本上手动重新启动事务，除非复制SQL线程随后以非临时错误消息终止。

如果不需要这种错误代码验证行为，可以使用[`--从机跳过错误`](replication-options-replica.html#option_mysqld_slave-skip-errors)选项

对于非事务存储引擎，如`米萨姆`，则可能有一条语句仅部分更新表并返回错误代码。例如，在一个多行插入中，一行违反了键约束，或者在更新某些行后终止了一个长update语句，就会发生这种情况。如果在源上发生这种情况，复制副本希望执行该语句会产生相同的错误代码。如果没有，复制SQL线程将停止，如前所述。

如果要在源和副本上使用不同存储引擎的表之间进行复制，请记住，在针对一个版本的表而不是另一个版本运行时，同一语句可能会产生不同的错误，或者可能会导致一个版本的表出错，而不是另一个版本。例如，自从`米萨姆`忽略外键约束[`插入`](insert.html)或[`使现代化`](update.html)语句访问`InnoDB`源上的表可能会导致外键冲突，但在`米萨姆`副本上相同表的版本不会产生此类错误，从而导致复制停止。
