Я работал над веткой с более ранней точки в проекте с открытым исходным кодом Flask-Python.В проекте есть один докер-контейнер для веб-приложения и один для базы данных postgres.Я переключился на свою текущую ветку, в которой уже есть миграция для нового поля в базе данных.Когда я проверял базу данных из докера с помощью psql, соответствующего поля там не было.
Я запустил flask db stamp head
, и он сказал applying stamp revision 3f8ca0b9fe63
, что было миграцией, которая создала новое поле.Однако после этого я проверил базу данных в psql, и поле все еще не было там.Когда я запустил flask db upgrade
, поле все еще не применялось.Когда я запустил flask db migrate
, он сгенерировал новую миграцию для поля, но я не хочу создавать новую миграцию, потому что у меня она уже есть.
Возможно, сегодня я отредактировал существующую миграцию.миграция и изменила имя файла с 3f8ca0b9fe63_.py
на 3f8ca0b9fe63_add_uii_to_depts.py
.Я также заменил """empty message
на """adds the unique_internal_identifier string column to the departments table
.
Почему колба не применяет эту миграцию к базе данных?
Мне было трудно погуглить эту ошибку, потому что она продолжает возвращать информацию об алембических ветвях вместо веток git.Я прочитал это обсуждение Reddit, https://www.reddit.com/r/django/comments/24mma5/how_to_manage_switching_back_and_forth_between/,, но я все еще не уверен, как решить проблему.
ОБНОВЛЕНИЕ: Я решил эту проблему и хотел включить свое решениеВ случае, если кто-то с подобной проблемой найдет мой вопрос в будущем.Я запустил flask db current
, чтобы подтвердить, что в моей базе данных была версия 3f8ca0b9fe63
.Затем я запустил flask db history
, чтобы увидеть список миграций, и увидел, что предыдущий номер ревизии был 2a9064a2507c
.Я запустил flask db stamp 2a9064a2507c
, чтобы установить базу данных на эту ревизию без выполнения каких-либо миграций.Я подтвердил, что это было успешно, запустив flask db current
снова.Наконец, я запустил flask db upgrade 3f8ca0b9fe63
, чтобы применить миграцию.Я подтвердил, что все прошло успешно, снова запустив flask db current
и проверив таблицу базы данных в psql.Теперь появится необходимый столбец.