Elastic Beanstalk - Невозможно перенести базу данных Django
У меня сейчас самое тяжелое время, когда я пытаюсь настроить свой экземпляр Elastic Beanstalk и заставить его работать с Django.
Я пытаюсь заставить свои миграции работать, но сталкиваюсь с каждой проблемой в книге одна за другой.
Я использую: Python 3.8 с Amazon Linux 2/3.3.9
Я начинаю с абсолютно новой базы данных без предыдущих миграций и запускаю эти команды из файла db-migrate.config:
container_commands:
01_collectstatic:
command: "source /var/app/venv/*/bin/activate python3 manage.py collectstatic --noinput"
02_show_migrations:
command: "source /var/app/venv/*/bin/activate && python3 manage.py showmigrations"
03_migrate_sites:
command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate sites"
04_migrate_ct:
command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate contenttypes"
05_makemigrations:
command: "source /var/app/venv/*/bin/activate && python3 manage.py makemigrations app1"
06_migrate:
command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate app1"
07_makemgirations:
command: "source /var/app/venv/*/bin/activate && python3 manage.py makemigrations app2"
08_migrate_custom_user:
command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate app2"
09_makemigrations:
command: "source /var/app/venv/*/bin/activate && python3 manage.py makemigrations app3"
10_migrate:
command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate app3"
...
17_migrate:
command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate"
Как вы можете догадаться, я прошел через мучительный процесс "проб и ошибок", чтобы найти порядок для моих приложений, который бы не вызывал ошибок миграции. Только так я смог, наконец, перенести все приложения моего проекта.
Проблема в том, что мои таблицы все еще не созданы в моей базе данных. Если я захожу на свой сайт, я получаю :
(1146, "Table 'ebdb.appX_MyModel' doesn't exist")
Любопытно, что мой журнал cfn-init-cmd.log показывает:
============================================================
Command 15_makemigrations
-----------------------Command Output-----------------------
Migrations for 'appX':
appX/migrations/0001_initial.py
- Create model Model1
- Create model Model2
- Create model Model3
- Add field xxx to Model1
- Add field yyy to Model1
------------------------------------------------------------
Completed successfully.
============================================================
Operations to perform:
Apply all migrations: admin, auth, contenttypes, app1, app2, app3, app4, ...
Running migrations:
No migrations to apply.
Итак, мои команды подхватываются, и команда 'makemigrations' распознает изменения в моих моделях, но миграции почему-то не происходят. Если я попытаюсь войти по SSH в свою базу данных, чтобы лучше рассмотреть свою схему, я увижу, что только одна из моих таблиц была добавлена в мою базу данных.
MySQL [ebdb]> show tables;
+-----------------------------------------+
| Tables_in_ebdb |
+-----------------------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| app1_user |
| app1_user_groups |
| app1_user_user_permissions |
| django_content_type |
| django_migrations |
| django_site |
+-----------------------------------------+
Очевидно, мне не хватает интуиции, чтобы понять, как это работает. Я трачу время на Elastic Beanstalk неделями и пересматриваю возможность использования сервиса вообще.
Возможно, моя проблема связана с другой вещью, которую я заметил, находясь в SSH. Если я войду в репо моего проекта (с активированным env) и попробую запустить миграции оттуда, я получу следующую ошибку:
django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)")
Если кто-то может подсказать мне, почему мне так трудно настроить мою базу данных, это очень мне поможет. Спасибо за помощь.