Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Replication and Reserved Words

19.5.1.26 复制和保留字

当您尝试从旧版本的源复制到新版本的副本,并在源上使用了保留字时,您可能会遇到问题。例如,在 MySQL 5.7 源上命名为 rank 的表列在 MySQL 8.3 副本上可能会引发问题,因为 RANK 在 MySQL 8.0 中变成了保留字。

在这种情况下,复制可能会失败,出现 Error 1064 您的 SQL 语法中有错误...即使数据库或表名使用保留字或表名使用保留字被排除在复制之外。这是因为每个 SQL 事件都需要在副本上解析,以便副本知道哪些数据库对象或对象将受到影响。只有在事件被解析后,副本才能应用定义的过滤规则,例如 --replicate-do-db--replicate-do-table--replicate-ignore-db--replicate-ignore-table

要解决源上的数据库、表或列名是副本上的保留字的问题,可以采取以下一种或多种方法:

  • 在源上使用一个或多个 ALTER TABLE 语句来更改任何数据库对象的名称,以便这些名称在副本上不再是保留字,并将使用旧名称的 SQL 语句更改为使用新名称。

  • 在使用这些数据库对象名称的 SQL 语句中,使用反引号字符 (`) 将名称括起来。

有关 MySQL 版本的保留字列表,请参阅 MySQL 8.0 中的关键字和保留字,在 MySQL 服务器版本参考 中。有关标识符引号规则,请参阅 第 11.2 节,“模式对象名称”