Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
2 / 2 / 3
Регистрация: 25.10.2019
Сообщений: 54

Django не подключается к MariaDB, если поменять порт

24.07.2022, 14:37. Показов 1814. Ответов 7

Студворк — интернет-сервис помощи студентам
Всем привет, у меня есть рабочий сайтик https://github.com/Adefey/Djan... ornDockers, чтобы его запустить я делаю git clone ..., потом делаю миграции и тд. Но сейчас мне нужно поменять порт у MariaDB, потому что на машине, где это будет запущено уже занят 3306. Сайт деплоится через Docker Compose.
Я поменял порт через docker-compose:
Code
1
2
3
4
 ports:
      - 3308:3306
    expose:
      - 3308
Теперь если я попытаюсь через bash машины, которая хостит, подключиться к БД с помощью
Code
1
mysql -h 127.0.0.1 -u user -P 3308 -p
, то все работает и меня пускает в базу данных. Только вот Django не может подключиться и пишет при попытке сделать миграции:
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
sudo docker-compose exec web python manage.py makemigrations
 
/usr/local/lib/python3.10/site-packages/django/core/management/commands/makemigrations.py:105: RuntimeWarning: Got an error checking a consistent migration history performed for database connection 'default': (2002, "Can't connect to MySQL server on 'db' (115)")
  warnings.warn(
No changes detected

В настройках Django порт тоже поменял:
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
DATABASES = {
    'default': {
    'ENGINE': os.environ.get('ENGINE', "django.db.backends.mysql"),
    'NAME': os.environ.get('NAME', "guestbook"),
    'USER': os.environ.get('USER', "user"),
    'PASSWORD': os.environ.get('PASSWORD', "14565"),
    'HOST': os.environ.get('HOST', "db"),
    'PORT': os.environ.get('PORT', "3308"),
 }
}

И все равно не работает.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.07.2022, 14:37
Ответы с готовыми решениями:

переезд с lightt + mariadb 5.x на nginx + php-fpm + mariadb
Доброго времени суток, коллеги. Имею такую проблему: Ранее был lighttpd на centos 7.X, всё работало корректно. Сейчас...

Не подключается JS файл на сайт Django
Привет всем форумчанам. Делают сайт на Django, понадобилось подключить JQuery, но не задача в том, что в консоле браузера выдает ошибку. ...

Обновил mariadb 5.5 на mariadb 10.5, настройка сервера
В пятой версии у меня было так: innodb_buffer_pool_size = 12G innodb_log_file_size = 512M innodb_log_files_in_group = 6 в...

7
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.07.2022, 15:09
Цитата Сообщение от Adefe Посмотреть сообщение
Только вот Django не может подключиться и пишет при попытке сделать миграции
сообщение означает, что все миграции уже есть, чтобы их реально мигрировать, нужно не makemigrations, а migrate
0
2 / 2 / 3
Регистрация: 25.10.2019
Сообщений: 54
24.07.2022, 16:37  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
сообщение означает, что все миграции уже есть, чтобы их реально мигрировать, нужно не makemigrations, а migrate
Ну, там же еще написано, что ошибка при подключении к СУБД. При migrate тоже выдает ошибку.
Кликните здесь для просмотра всего текста

На сайте "Bad Request (400)"
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.07.2022, 16:47
да, не пролистал до конца ошибки.

а имя "db" разрешается в ip базы из контейнера приложения?

Добавлено через 6 минут
плюс, вы не запускаете базу на другом порту, вы делаете маппинг порта базы к другому для хоста, контейнеры не общаются друг с другом через хост (если Вы, конечно, намеренно этого не делаете).
0
2 / 2 / 3
Регистрация: 25.10.2019
Сообщений: 54
24.07.2022, 18:25  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
а имя "db" разрешается в ip базы из контейнера приложения?
Вообще все работало, если запускать версию из гитхаба.
Я поменял в конфиге порты:
Кликните здесь для просмотра всего текста

Поменял в docker-compose:
Кликните здесь для просмотра всего текста
Code
1
2
3
4
expose:
      - 3308
    ports:
      - 3308:3308

Но почему-то все равно в портах docker ps пишет, что 3306 используется:
Кликните здесь для просмотра всего текста

Джанго все равно не видит СУБД, но если подключаться вручную, то появляется ошибка:
adefe@debian:~/DjangoNginxGunicornDockers$ mysql -h 127.0.0.1 -u user -P 3308 -p
Enter password:
ERROR 2013 (HY000): Lost connection to MySQL server at 'handshake: reading initial communication packet', system error: 11
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.07.2022, 19:58
Лучший ответ Сообщение было отмечено Adefe как решение

Решение

еще раз говорю,
expose:
- 3308
ports:
- 3308:3308
это не запускает базу на других портах. Ваша проблема никак не относится к Джанго, она связана с непониманием работы докера, а конкретно, что такое expose, как работает порт маппинг...

expose вообще практически ничего не делает, и болье выполняет документационную функцию, а ports делает маппинг порта хоста к порту контейнера. При этом контейнеры (как я тоже уже говорил выше) общаются друг с другом не через этот маппинг на хосте.

Добавлено через 1 минуту
Если же база не запускается на порту 3308 даже если вы ей в настройках указываете запускаться на других портах - это еще меньше связано с джанго

Добавлено через 1 минуту
Если есть ссылка на репу, с которой я мог бы вытянуть Ваш проект - могу посмотреть конкретнее.

Добавлено через 15 минут
чтобы запустить марию на порту, отличном от стандартного, можно, скорее всего передать номер порта через переменную окружения MYSQL_TCP_PORT.

Добавлено через 2 минуты
или с флагом --port <port number>
0
2 / 2 / 3
Регистрация: 25.10.2019
Сообщений: 54
26.07.2022, 13:02  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
MYSQL_TCP_PORT
Да, похоже это и есть решение, спасибо.

Еще там невозможно было войти в root юзера базы данных, поэтому я убрал флаг MYSQL_RANDOM_ROOT_PASSWORD

И еще после этого всего был bad request (400), чтобы это пофиксить я в allowed hosts дописал адрес сервера.

Короче, сейчас все работает, вот гит https://github.com/Adefey/Djan... ornDockers

В сети на adefe.xyz
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
26.07.2022, 16:23
рад, что ответ найден, если остались какие-то вопросы - обращайтесь
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.07.2022, 16:23
Помогаю со студенческими работами здесь

Nginx+uwsgi+django: почему не подключается сокет?
Не удается деплойнуть сайт на джанго. Владелец сокета рут. Папка с сайтом /jion_capital Сокет лежит в ней Nginx включен, линк...

Контейнер с приложением django не подключается к контейнеру postgres (docker-compose)
Здравствуйте. Возникла проблема с разворачиванием проекта на django в docker. Джанговское приложение не хочет подключаться к postgres,...

USB 2.0 порт отключается и подключается сам по себе
Всем доброго времени суток! Уже около 3 лет пользуюсь одной и той же системой, однако вчера появилась одна проблема: один USB порт...

Через консольный порт не подключается к cisco 3500
Доброго времени суток. Проблема в следующем есть cisco 3500 подключаю его консольным кабелем к консольному порту), дело в следующем захожу...

Найдите среднюю цифру числа, если она четная, то поменять ее на 0; если она нечетная, то поменять ее на 9
3. С клавиатуры вводится длинное целое число, которое имеет нечетное количество цифр. Найдите среднюю цифру числа, если она четная, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru