文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  复制和保留字

19.5.1.26 复制和保留字

当您尝试从旧的源复制到新的副本时,如果在源上使用了在副本上运行的新版 MySQL 中被视为保留字的标识符,您可能会遇到问题。例如,在 MySQL 5.7 源上的名为 rank 的表列复制到 MySQL 8.4 副本时,可能会出现问题,因为 RANK 在 MySQL 8.0 中成为了保留字。

在这种情况下,复制可能会失败,并出现错误 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 节,“模式对象名称”.