Нет, вы не можете отменить ни одно изменение, кроме самого последнего развернутого изменения.Это по замыслу.Sqitch использует шаблон дерева Merkle , аналогичный Git и Blockchain, для обеспечения целостности развертывания.Это означает, что развертывание является связанной цепочкой в порядке, указанном в файле плана.Если вы развернули свой проект Sqitch в среде, в которую были загружены данные, лучше добавить новое изменение, чтобы добавить новый столбец.
Шаблон, который я часто использую при разработке базы данных доВыпуск продукции должен часто изменять изменения.Это означает изменение сценария развертывания fct_tickets
для добавления нового столбца, затем повторную установку на fct_tickets^
, который вернет все изменения после изменения непосредственно перед fct_tickets
, а затем повторно развернет их все.Я избегаю загрузки данных в такие системы как часть процесса разработки, вместо этого я либо храню данные, которые важны для модели данных, в отдельном изменении, либо в отдельном файле, который загружается независимо, например, в модульных тестах.
Если у вас есть тестовая система или что-то, к чему другие люди добавили данные, и это не финальная версия с тегами, то ваш лучший вариант, вероятно, состоит в том, чтобы выгрузить таблицу fct_tickets
в файл, выполнить перезагрузку с изменением, а затем перезагрузитьданные из этого файла.Обязательно установите значение по умолчанию для столбца или измените файл дампа, чтобы добавить данные в каждую строку перед загрузкой в обновленную таблицу.