Как я могу добавить SRID 4326 (пространственные типы) в Workbench при добавлении столбцов?

#mysql-workbench #workbench

#mysql-workbench #workbench

Вопрос:

Когда я добавляю столбец с типом POINT на диаграмме EER, могу ли я что-нибудь сделать с этой диаграммой, чтобы при автоматической генерации сценариев SRID 4326 присоединялся к сценарию СОЗДАНИЯ ТАБЛИЦЫ? Если я не настрою это число, то по умолчанию оно равно нулю (плоское), но мне нужно 4326 (сфера).

Если это невозможно, означает ли это, что я не могу автоматически синхронизировать свою модель со своим сервером и мне приходится постоянно добавлять эти изменения вручную?

Ответ №1:

Я тоже не мог этого понять. Я считаю, что добавление SRID в столбец в настоящее время не поддерживается MySQL Workbench.

Чтобы проверить, действительно ли он не поддерживается, я сделал следующее:

  1. Добавлен SRID в столбец существующей базы данных
  2. Обратная разработка сценария этой БД (с использованием Workbench)
  3. Проверил скрипт, включал ли он установленный SRID для столбца
  4. Был разочарован, что этого не произошло…

Однако «хорошей» новостью является то, что, поскольку он не поддерживается, MySQL Workbench не обнаружит отсутствующий SRID в столбце при синхронизации источников.

Это означает, что как только вы самостоятельно установите SRID для столбца, это не вызовет никаких проблем при синхронизации в будущем.

Обратите внимание, что для установки SRID для столбца в этом столбце не может быть (пространственного) индекса. Поэтому необходимо удалить индекс, установить SRID, а затем добавить индекс обратно.

Ниже приведен короткий и простой скрипт, который я использовал для этого. Не забудьте обновить его в соответствии с вашим вариантом использования:

 DROP INDEX `my_idx` ON my_table;
ALTER TABLE my_table MODIFY COLUMN my_column POINT NOT NULL SRID 4326;
ALTER TABLE my_table ADD SPATIAL INDEX `my_idx` (`my_column`) VISIBLE;
  

Комментарии:

1. Спасибо вам за это, очень полезно. Последнее утверждение вызывало у меня проблемы с MySQL 8.0.30, я использовал это вместо CREATE SPATIAL INDEX `my_idx` ON my_table (`my_column`) VISIBLE .