Несколько MySQL Workbench Синхронизация проблем - PullRequest
1 голос
/ 03 марта 2020

Я только начал использовать MySQL Workbench, и у меня возникают многочисленные проблемы при синхронизации.

Я смоделировал схему с помощью Workbench и Forward Engineered и успешно запустил ее на сервере базы данных. Позже отредактировал триггер и попытался синхронизировать его с сервером базы данных

Поэтому я перешел к Database -> Synchronize Model...

enter image description here

У меня есть только отредактировал один триггер (просто добавил +1 к уже существующей переменной в триггере), но, как вы можете видеть, он показывает, что все таблицы должны быть изменены / обновлены (с небольшим желтым восклицательным знаком). Это должно быть не так?

И когда я нажимаю continue, я заметил в сгенерированном скрипте, что он удаляет внешние ключи и снова добавляет их. enter image description here

И когда я нажал на Execute, он показывает ошибку:

ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Default Collation' at line 1

enter image description here

Кроме того, он добавляет DEFAULT COLLATE Default Collation для всех ALTER операторов для схем и таблиц, что вызывает error 1064

ALTER SCHEMA `myschema`  DEFAULT COLLATE Default Collation ;

.....
.....

.....

ALTER TABLE `table1` 
COLLATE = Default Collation ;

ALTER TABLE `table2` 
COLLATE = Default Collation ;

ALTER TABLE `table3` 
COLLATE = Default Collation ;
....
....
....
....

MySQL Community Edition: 8.0.19

MySQL Workbench: 8.0.19

macOS: Catalina 10.15.3

Я исследовал другие сообщения SO о error: 1064, и многие предлагали изменить версию , Итак, я также изменил версию MySQL в Workbench Model -> Model Options... -> MySQL -> Target MySQL Version: 8.0.19, но ошибка все еще существует. enter image description here

Я что-то упускаю или делаю неправильно?

Я пытался (наоборот) синхронизировать модель (как место назначения) с сервером базы данных ( как источник), чтобы убедиться, что по крайней мере сервер базы данных соответствует ожидаемому. Итак, когда я сделал это, все внешние ключи были удалены в диаграмме EER.

Я проверил на сервере базы данных, присутствуют ли даже внешние ключи, использующие эту запись , и все в порядке на сервер.

1 Ответ

1 голос
/ 04 марта 2020

Я не знаю, должен ли он быть таким или просто взломать, но дело в том, что я получил то, что хочу сейчас, по крайней мере.

Я использовал след и ошибку. Итак, я не знаю почему или как, но это работает.

Откройте рабочую среду, получите схему с сервера базы данных, отредактируйте схему в своей рабочей среде и синхронизируйте. Таким образом, даже если кто-то изменился на сервере, вы получите последнюю версию схемы.

Go до Database -> Reverse Engineer. Он создает диаграмму EER из схемы сервера базы данных.

После того, как вы сгенерировали диаграмму EER, попробуйте отредактировать ваши изменения и от go до Database -> Synchronize Model... Теперь у вас есть только желтый восклицательный знак перед именем таблицы, которое вы изменили (а не перед всеми таблицами, как вы сказали)

Кроме того, когда я это сделал, DEFAULT COLLATE Default Collation удаление строк или внешних ключей и добавление строк в финальный скрипт. Окончательный сценарий содержит только то, что требуется.

Надеюсь, он работает и для вас.

...