При развертывании обновленного кода Django на сервере база данных сбрасывается

#django #database #git #digital-ocean #reset

Вопрос:

Я создал приложение, которое использует Django в качестве Rest API (платформа Django rest). После развертывания кода в цифровом океане с использованием сервисов производственного уровня все работает хорошо. База данных postgresql заполняется правильно . Там нет сброса сервера, как на Heroku.

За исключением того, что если я изменю файл и передам изменение через gitlab(Digital ocean подхватит изменение и автоматически развернет обновленную версию сервера), база данных вернется в исходное состояние. Я бы хотел, чтобы сервер оставался таким же.

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

База данных размещена также в цифровом океане. Я не делал никаких настроек. Не будет ли оно управляться автоматически по мере развертывания кода на его серверах?

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

1. Где находится база данных? Как он настроен? Здесь недостаточно информации, чтобы рассказать вам, в чем проблема.

2. Какую базу данных вы используете и как она настроена? использовали ли вы какую-либо контейнерную технологию для развертывания своего приложения, такого как Docker?

3. Это база данных postgresql 12

4. Вы храните какие-либо свои данные postgresql в gitlab ?

5. да, в gitlab есть файл db.sqlite3. Нужно его удалить?

Ответ №1:

Я понял, что пошло не так. Использование базы данных sqlite при разработке-это одно, но предположение, что при развертывании вашего приложения django на поставщике услуг оно будет обрабатывать все управление базой данных, — это 1000 шагов слишком далеко.

Логично, что всякий раз, когда я отправлял новое обновление на сервер, бд сбрасывалась с помощью локального файла БД sqlite проекта.

Поэтому я создал конкретную базу данных в digital ocean, изменил конфигурацию базы данных в файле настроек моего проекта django, чтобы подключиться к ней. Создание проекта с использованием внешней базы данных. затем мне просто пришлось перенести структуру базы данных проекта во внешнюю базу данных.

И Вуаля. проблема решена