9.5.1 Синхронизация базы данных
Синхронизируйте данные между моделями, базами данных и SQL-файлами. Эти три типа могут быть целью (назначением), источником или тем и другим. Вы также можете выбрать или убрать галочки с отдельных объектов и изменить их направление во время синхронизации. Например, вы можете синхронизировать таблицы из модели в вашу базу данных, другие таблицы из вашей базы данных в вашу модель и пропустить несколько таблиц во время одного процесса синхронизации.
Обратите внимание, что со временем в синтаксисе MySQL вводятся несовместимые с предыдущими версиями изменения, поэтому по этой причине важно установить предпочтительный параметр модели Значение по умолчанию для целевой версии MySQL в соответствии с вашими потребностями. Например, экспорт результатов из целевой базы данных MySQL 5.7 может привести к недействительному синтаксису при выполнении запроса в MySQL 5.6. См. также Раздел 3.2.4 «Предпочтения моделирования».
Для начала выберите из навигационного меню , как показано на следующей фигуре. В качестве альтернативы, выберите Синхронизировать модель, чтобы открыть тот же мастер, по умолчанию настроенный на модель. Для того, чтобы эти параметры синхронизации были доступны в навигационном меню , необходимо выбрать модель или диаграмму EER.
Рисунок 9.56 Запуск мастера синхронизации
Поскольку базы данных MySQL соответствуют каталогам в каталоге данных, вам необходимо учитывать регистрозависимость имен баз данных, таблиц и триггеров, которые следуют правилам регистрозависимости базовой файловой системы вашей операционной системы. Синхронизация моделей с объектами, различающимися регистром, может привести к тому, что MySQL Workbench выведет для этого объекта оператор DROP перед его повторным созданием в нижнем регистре. Более подробную информацию см. в
Решение проблемы включает использование согласованной конвенции, где наиболее переносимый код использует имена баз данных и таблиц в нижнем регистре. Или временным решением является удаление строки DROP SCHEMA IF
EXISTS из сгенерированного запроса.
MySQL Workbench позволяет управлять объектами для синхронизации и направлением синхронизации для каждого объекта. Параметры синхронизации включают:
Укажите все или определенные таблицы и объекты для синхронизации.
Синхронизировать модель и базу данных в реальном времени или обновить только одну из них (односторонне или двусторонне).
При необходимости обновлять из или в файл скрипта SQL.
Вместо выполнения синхронизации вы можете сгенерировать файл скрипта ALTER для последующего выполнения необходимых обновлений.
Тонко настроить процесс синхронизации, выбрав направление каждого отдельного объекта или настроив конкретные объекты для игнорирования.
Из меню доступны два похожих мастера синхронизации баз данных. Более простой мастер Синхронизировать модель и более гибкий мастер Синхронизировать с любым источником. Описания ниже относятся к обоим, если не указано иное.
Синхронизировать модель (с базой данных)
Чтобы запустить мастер, откройте модель и выберите , из главного меню. Следуйте пошаговой инструкции, пока не дойдете до шага Выбор изменений для применения, как показано на следующей фигуре.
Рисунок 9.57 Отличия между моделью и базой данных
В приведенном примере в базе данных в реальном времени и модели есть таблицы movies shows. В MySQL Workbench была создана дополнительная таблица educational в модели, но в базе данных в реальном времени нет эквивалента. Кроме того, таблица friends существует в базе данных в реальном времени, но отсутствует в модели. По умолчанию действия будут синхронизировать базу данных с моделью, поэтому в этом примере таблица educational будет добавлена в источник, а таблица friends будет удалена из источника.
Как описано в пользовательском интерфейсе, двойной щелчок по стрелкам позволит чередовать действия , и . Вы также можете выбрать строку и нажать одну из трех кнопок действий. Также обратите внимание, что щелчок по строке отобразит соответствующее SQL-выражение, как показано на предыдущей фигуре.
Следующая фигура демонстрирует пример того, как можно изменить направление синхронизации.
Рисунок 9.58 Управление направлением синхронизации
В этом случае направление синхронизации было изменено так, что вместо действия по умолчанию, при котором friends удаляется из базы данных в реальном времени, она будет включена в модель MySQL Workbench. Как и раньше, таблица educational будет добавлена в базу данных в реальном времени (источник).
Доступные три действия:
: Применяет выбранные изменения к модели из базы данных в реальном времени.
: Изменения игнорируются. Синхронизация для этих изменений не будет производиться. Это обозначается стрелкой, которая перечеркнута.
: Изменения применяются только к базе данных в реальном времени.
Нажатие на предоставляет дополнительные параметры сопоставления, как показано на следующей фигуре.
Рисунок 9.59 Сопоставление таблиц
Нажатие на отображает SQL-запрос для выполнения настроенной синхронизации модели и базы данных в реальном времени (источника). Следующая фигура показывает пример предварительного просмотра.
Рисунок 9.60 Предварительный просмотр SQL-запроса синхронизации
Теперь вы можете сохранить SQL-запрос в файл или буфер обмена, или выполнить SQL-запрос. Если вы выберете выполнение изменений в MySQL Workbench, то можете выборочно пропустить "Изменения в БД", чтобы изменить только вашу модель.
Синхронизировать с любым источником
Чтобы запустить мастер, откройте модель и выберите , а затем из главного меню. Шаги аналогичны мастеру Синхронизировать модель, но с дополнительными параметрами для создания файлов скриптов SQL, использования файлов скриптов SQL или того и другого. Следующая фигура показывает настройки Выбор источников.
Рисунок 9.61 Синхронизировать с любым источником: Выбор источников
Обратите внимание, как можно изменить типы источника и назначения. Следующие шаги зависят от этих типов источника и назначения, а Синхронизировать модель описывает основные возможности этого мастера.
© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/workbench-en/wb-database-synchronization.html