文档主页
MySQL 9.0 参考手册
相关文档 下载此手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

19.5.1.27 复制和保留字

当您尝试从旧的源复制到新的副本,并且在源上使用了在新版本 MySQL (运行在副本上) 中是保留字的标识符时,您可能会遇到问题。例如,在 MySQL 5.7 源上名为 rank 的表列复制到 MySQL 9.0 副本可能会导致问题,因为 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 Server 版本参考 中的 MySQL 8.0 中的关键字和保留字。有关标识符引用规则,请参阅 第 11.2 节,“模式对象名称”