Flask-migrate не обновляет и не переносит изменения после изменения среды

#flask #flask-migrate

#flask #flask-migrate

Вопрос:

Я запускаю Flask с помощью FLask-SQLAlchemy в приложениях DigitalOcean. Я не могу заставить Flask-Migrate работать должным образом в производственной среде. Вызов flask db migrate моего производственного приложения ничего не делает. Изменений не обнаружено. Ничего. Только это ниже:

 INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
 

Таким образом, я попробовал это руководство, которое в основном является способом «начать сначала». Я бы создал начальную миграцию в локальную пустую базу данных, затем передал этот сценарий миграции в исходный код и запустил его в режиме реального времени. Изменения (начальная миграция) были обнаружены просто отлично в пустой локальной базе данных. Все, что изменилось, это то, что база данных пуста, и я изменил DATABASE_URI env.

Это означает, что выполняется миграция для «первой миграции» в производственном экземпляре. Насколько мне известно, это отражает состояние рабочей базы данных.

Затем я бы запустил flask db stamp head рабочий и локальный. При запуске flask db migrate в рабочей среде (с изменением, которое я хочу перенести) ничего не происходит. Изменений не обнаружено. flask db upgrade выдает те же результаты. Я проверил экземпляр migrate на производстве — у него правильная строка подключения к БД. Веб-приложение работает, но оно не обнаруживает или не может вносить новые изменения?

У меня есть данные в моей базе данных, я абсолютно не могу их удалить.

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

1. Насколько я понимаю из руководства, вы не ожидаете каких-либо результатов flask db upgrade в рабочей среде после изменения uri. Можете ли вы подтвердить, что выполнили следующее: 1. создайте пустую локальную базу данных, 2. запустите init и migrate в этой пустой базе данных, 3. измените uri на «реальную» базу данных, 4. запустите flask db stamp head команду. Я думаю, что способ проверить, сработало ли это, — это внести новое изменение, выполнить migrate команды upgrade and и посмотреть, сработало ли оно. Другим источником ошибок может быть то, что вы используете разные имена схем в базах данных (это случилось со мной однажды)

2. Обе базы данных являются базами данных POSTGRES. Я подтверждаю, что я сделал 1. Я сделал 2. Я сделал 3. После того, как я это сделал, выполнение миграции и обновления при новом изменении ничего не дает. Ничего не обнаружено.

3. Я могу подтвердить, что после шага 3 и запуска flask db stamp head я внес изменения в схему (в локальной «реальной» базе данных), и никаких изменений обнаружено не было.

4. вы пытались перечислить столбцы с помощью d в postgres и можете подтвердить, что у вас одинаковые выходные данные для обеих баз данных (имя, схема, тип, владелец)?

5. кроме того, что, на мой взгляд, cme: в 3., не меняйте URI, а фактически переименовывайте базы данных и оставляйте URI неизменным, чтобы база данных, на которую вы ссылаетесь в своем приложении, всегда имела одно и то же имя