170 похожих чатов

Дарова всем. Я чет задумался. Что делаю что-то не то

с джанго.
Джанга крутится внутри докера. В скрипте старта захардкожен код сборки статики и миграции.
Соответственно он запускается долго.
Но проблема в другом, как можно запустить новый инстанс, применить миграции и на него переключиться? Чтобы во время миграции не сломалась предыдущая версия?
Как вариант я вижу - никогда не переименовывать названия столбцов в БД. Но вдруг есть другой способ?

9 ответов

35 просмотров
E-T Автор вопроса

Up!

ты хочешь поднимать разные версии проекта на одной базе без полной потери данных? Миграция предполагают откат обратно Например, для приложения someapp последняя миграция - под индексом 0010 manage.py migrate someapp 0009 и вот ты откатился при условии, что кастом миграции написаны правильно, миграции предполагают откат без последствий Можно до переключения версии проекта откатиться, а потом уже переключить версию; Чтобы упростить регистр версия проекта->список необходимых миграций, я бы, наверное, расширил табличку django-migrations и писал бы туда еще версию релиза, тогда можно будет понять куда надо откатиться для той или иной версии проекта вероятно, чтобы это работало хорошо, стоит писать тесты на успешный реверс миграций (всё описанное выше - какая-то лютая дичь, но как лучше решить такую задачу - я не придумал) Но в общем-то, гемморно это все и фишка докера в автономности и атомарности - есть система, не отчего-либо извне не зависит, надо - собрал, запустил

E-T Автор вопроса

Я думаю нужно делать БД таким образом, чтобы не было удалений столбца и переименовывания. Тогда предыдущая версия будет работать спокойно. Если что-то нужно - добавь и при следующем деплое удали уже не нужную строку.

а если у тебя в новом стоблце стоит not null?

E-T Автор вопроса

Ну, кодер я или нет? То есть это все можно предусмотреть.

как ты такое предусмотришь в разрезе твоего решения? :) новое поле not null, в моделе прошлой версии его нет. ты пытаешься сделать save() и получаешь ошибку от БД

E-T Автор вопроса

Ну, сейва не будет. В момент апгрейда будет только чтение данных. Или можно средствами базы сделать дефолное значение

с моим решение, мягко говоря, не все хорошо, но это решение принесет еще больше боли; но спорить не буду, дело хозяйское :)

E-T Автор вопроса

Я вообще решил, что если бэк отвечает 50х кодом, то насильно в нгинсе отвечать 200

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта