MySQL 8.0版本说明
MySQL 8.0源代码文档10bet官方网站
当您试图从较旧的源代码复制到较新的副本,并且使用源上的标识符(在副本上运行的较新的MySQL版本中是保留字)时,您可能会遇到问题。例如,一个名为排名
在MySQL 5.7源上复制到MySQL 8.0副本可能会导致问题,因为排名
是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服务器版本参考.有关标识符引用规则,请参见第9.2节“模式对象名称”.