Повторяемая миграция Flyway для представления не может быть удалена

У нас есть куча представлений в postgres, созданных Flyway как повторяемые миграции.

Ошибка, с которой мы столкнулись, заключается в том, что если мы хотим переименовать столбец с помощью CREATE OR REPLACE VIEW, postgres выдает ошибку и не может этого сделать.

Один из вариантов — сначала отказаться от представления. Но это вызывает проблему, если от представления зависит что-то еще, что также вызовет ошибку.

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


person Community    schedule 14.08.2019    source источник


Ответы (1)


Вы не можете использовать CREATE OR REPLACE для него, потому что он был разработан для расширения списка столбцов:

СОЗДАТЬ ПРЕДСТАВЛЕНИЕ

CREATE OR REPLACE VIEW работает аналогично, но если представление с таким именем уже существует, оно заменяется. Новый запрос должен создавать те же столбцы, которые были созданы существующим запросом представления (то есть те же имена столбцов в том же порядке и с теми же типами данных), но он может добавлять дополнительные столбцы в конец списка. Вычисления, приводящие к выходным столбцам, могут быть совершенно разными.

Опции:

  • вносить обратно совместимые изменения, т. е. добавлять только новые столбцы

  • удалить и воссоздать представление (вам нужно обработать зависимости объекта)


Flyway — это инструмент, основанный на миграции, вы можете найти инструмент миграции на основе состояния для PostgreSQL (в SQL Server есть SSDT). Связанные состояние или разработка базы данных на основе миграции

6 инструментов контроля версий для PostgreSQL

Инструменты на основе состояния: создание сценариев для обновления базы данных путем сравнения структуры базы данных с моделью (эталоном).

Инструменты на основе миграции - помощь/помощь в создании сценариев миграции для переноса базы данных из одной версии в другую.

person Lukasz Szozda    schedule 14.08.2019