Django 5 для начинающих

Прогресс по курсу:  9/1004

9.3 Установка PostgreSQL, настройка и перенос БД
3 из 9 шагов пройдено
0 из 15 баллов  получено

Создание дампа БД и перенос его на сервер

 

Запустим Командную строку Windows, в ней перейдём в директорию C:\Program Files\PostgreSQL\15\bin и создадим файл дампа БД нашего проекта, с помощью утилиты pg_dump:

cd C:\Program Files\PostgreSQL\15\bin
pg_dump -U postgres -Fc -f D:/blog.dump blog3

Примечание: Имя БД blog3 необходимо заменить на то имя БД, которое использовалось на вашем локальном компьютере.


Перейдём в директорию C:\Program Files\PuTTY и загрузим наш файл дампа blog.dump, с помощью pscp, на сервер:

cd C:\Program Files\PuTTY
pscp D:\blog.dump root@xxx.xxx.xxx.xxx:/var/www/mysite_03

Примечание: xxx.xxx.xxx.xxx необходимо заменить на IP-адрес вашего сервера.


Проверяем:

ls -la /var/www/mysite_03

Файл blog.dump появился в директории /var/www/mysite_03, теперь можно загрузить его в БД.


  • Комментария
Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

@Шамбер_Егор, создайте какую-нибудь временную директорию и в неё сохраняйте.

@Дмитрий_Селезнев, а как например, я прост уже боюсь сделать какой либо шаг неправильный

@Шамбер_Егор, если ставили на сервер 15ю версию, тогда необходимо выгружать дамп в текстовом формате, посмотрите этот коммент: https://stepik.org/lesson/1018273/step/4?discussion=8342006&reply=8342920&unit=1026204

@Шамбер_Егор, вручную создайте директорию, например dump, соответственно добавьте её в путь - C:/dump/blog.dump

@Шамбер_Егор, можно прямо в командной строке создать, не покидая текущую директорию:

можете подсказать в чем проблема?

@Маркелов_Александр, видимо создавали другого пользователя, посмотрите в файле настроек проекта, там должен быть актуальный пользователь БД.

@Дмитрий_Селезнев, я зашел в настройки, и там пользователь blog, но возможно дело в портах, так как в настройках пишется 5433, а в ошибке 5432

@Маркелов_Александр, попробуйте сделать так, если пользователь БД в файле настроек blog:

pg_dump -h localhost -p 5433 -U postgres -Fc -f /путь/к/файлу/дампа blog

Изменен Дмитрий Селезнев

@Дмитрий_Селезнев, теперь выдает такую ошибку

@Маркелов_Александр, странно, Django ведь работала с этими настройками?

@Дмитрий_Селезнев, да, все до этого работало(((

@Дмитрий_Селезнев, а нельзя пустую новую бд поставить?

@Маркелов_Александр, она должна уже быть создана к этому моменту, необходимо только прописать настройки БД и применить миграции(python manage.py migrate), виртуальное окружение должно быть при этом активировано.

@Дмитрий_Селезнев, настройки бд такие же, как на скриншоте ниже, запустил env и сделал миграцию, но он начал выдвать ошибки

@Маркелов_Александр, в этом и проблема, порт необходимо прописать как в следующей лекции 5432.

@Дмитрий_Селезнев, я поменял порт, миграция произошла успешно

@Маркелов_Александр, создайте администратора в Django и можно дальше проходить. Записи можно потом добавить.

@Дмитрий_Селезнев, вот я сделал все шаги данного блока заново, удалил роль blog и postgres, создал их заново, но все равно выдается ошибка, может я неправильно прописываю путь к дампу

@Маркелов_Александр, насколько я помню на локальном компьютере у БД был порт 5433, именно он был прописан в настройках Джанго.

@Дмитрий_Селезнев, на локальном компьютере да, но ничего что я на сервере поменял порт на 5432?

@Дмитрий_Селезнев, может мне уже проще удалить проект с сервера и перезалить его по новой?

@Маркелов_Александр, на сервере и должен быть порт 5432, а на локальном 5433, ведь он был в настройках прописан.

Зачем удалять проект с сервера, он ведь работает? Или нет? После выполнения миграций блог загружался?

С БД на сервере что-нибудь делали?

В любом случае проект на сервере удалять не нужно.

@Дмитрий_Селезнев, ну как сказать работает, только так

@Маркелов_Александр, а проект на локальном компьютере работает?

@Дмитрий_Селезнев, проверил, не работает...

@Маркелов_Александр, похоже БД не запущена, проверьте её статус:

cd /Library/PostgreSQL/15/bin
pg_ctl status

@Дмитрий_Селезнев

@Маркелов_Александр, Для начала установите DBngin, чтобы было удобнее отслеживать и запускать БД. И через что устанавливали PostgreSQL, инсталятор или Homebrew?

@Маркелов_Александр, выполните команду:

ps auxwww | grep postgres

@Илья_Перминов, приложение скачал, скачивал скорее всего через терминал

@Дмитрий_Селезнев

@Маркелов_Александр, а приложение запускали? В нем же видно порты БД и их статус.

Скрин его сделайте, как у Ильи.

Изменен Дмитрий Селезнев

@Дмитрий_Селезнев

@Дмитрий_Селезнев

@Маркелов_Александр, установите порт 5433 для 15й PostgreSQL и запустите её, если запустится можно проверять проект.

@Маркелов_Александр, Если что, делается это нажав правой кнопкой и выбрав Edit:

Изменен Илья Перминов

@Дмитрий_Селезнев, изменил порт, но проект локально все равно не запускается

 

 

@Маркелов_Александр, похоже пользователь удалён, попробуйте подключиться через psql, выполните:

psql -h localhost -p 5433 -U postgres
\du
\l

@Дмитрий_Селезнев

@Маркелов_Александр, похоже с локального компьютера удалили БД и пользователя, придётся заново их создать, применить миграции и загрузить дамп mysite_data.json, как в разделе 6.10.

@Маркелов_Александр, получилось ли восстановить проект на локальном компьютере?

@Дмитрий_Селезнев, добрый вечер, извините, что долго не отвечал, долго не занимался, сегодня только сел, вот сейчас получилось восстановить проект локально

@Маркелов_Александр, хорошо что не бросили проект.

Сначала сделайте дамп БД проекта, как тут описывалось, а потом загрузите на сервер.

Старую БД на сервере можно удалить, зайдите с помощью psql, и удалите БД blog, а потом её снова создайте.

Пользователя blog удалять не нужно.

@Дмитрий_Селезнев, Также получилось загрузить дамп на сервер, спасибо вам огромное, вы так долго со мной мучились!

@Маркелов_Александр, а дамп загрузили в БД на сервере?

@Дмитрий_Селезнев, дамп да, получилось загрузить

@Маркелов_Александр, можно тогда делать следующий шаг.

Подскажите, пароль для pg_dump нужно вводить такой же как и в файле settings.py?

@Григорий_Кожанов, нет, тут указывается пароль суперпользователя БД - postgres, который был указан при установке БД, в шаге https://stepik.org/lesson/973399/step/1?unit=980251. В данном случае можно использовать и данные владельца БД blog:

pg_dump -U blog -Fc -f D:/blog.dump blog

Соответственно и пароль, нужно вводить, пользователя blog.

@Дмитрий_Селезнев, Спасибо