Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

19.5.1.26 复制和保留字

当您尝试从较旧的源复制到较新的副本,并且在源中使用了副本中保留字的标识符时,可能会遇到问题。例如,在 MySQL 5.7 源中有一张名为 rank 的表列,这在 MySQL 8.4 副本中可能会导致问题,因为 RANK 在 MySQL 8.0 中变为保留字。

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

要解决源中数据库、表或列名将被副本认为保留字的问题,可以采取以下方法:

  • 在源上使用一个或多个 ALTER TABLE 语句来更改任何将被认为保留字的数据库对象的名称,并将使用旧名称的 SQL 语句更改为使用新名称。

  • 在使用这些数据库对象名称的 SQL 语句中,写入名称作为带引号的标识符使用 backtick 字符 (`).

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