19.5.1.27 Репликация и зарезервированные слова
Возможны проблемы при репликации из более старого источника в более новую реплику, если вы используете идентификаторы в источнике, которые являются зарезервированными словами в новой версии MySQL, работающей на реплике. Например, столбец таблицы, названный rank в источнике MySQL 5.7, который реплицируется в реплику MySQL 9.2, может вызвать проблему, потому что 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 Server. Правила цитирования идентификаторов см. в Разделе 11.2, «Имена объектов схемы».
© 2025 Oracle
Licensed under the GPLv2 License.