#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 неизменным, чтобы база данных, на которую вы ссылаетесь в своем приложении, всегда имела одно и то же имя