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)")

Если кто-то может подсказать мне, почему мне так трудно настроить мою базу данных, это очень мне поможет. Спасибо за помощь.

Вернуться на верх