call_command makemigrations не работает на EBS

У меня есть сценарий, в котором мне нужно создать таблицу динамически. Чтобы создать таблицу динамически, я написал код для создания файла model.py с содержимым таблицы, которое я хочу создать.

После создания этого файла я хочу выполнить команду makemigrations из самого кода, например:

 from django.core.management import call_command
 call_command('makemigrations')
 call_command('migrate')

он хорошо работает и в моем локальном экземпляре AWS EC2, но не работает в Elastic Beanstalk (eb). и когда я пытаюсь запустить команду makemigrations вручную из eb ssh, это выдает мне следующую ошибку.

PermissionError: [Errno 13] Permission denied: '/opt/python/bundle/47/app/quotations/migrations/0036_dynamic_table.py'

У любого есть идея, как я могу справиться с этой ситуацией.

Еще одна вещь заключается в том, что, когда я создаю новые динамические модели, как я могу перенести этот код в Git, как при новом развертывании EBS заменит существующий код новым кодом, так что таким образом я потеряю созданные мной файлы в EBS с помощью этих команд

Спасибо

2 ответа

Решение

Я согласен с Эдди, что вам нужно изменить права доступа к папке миграции.

Папка миграций находится по адресу: /opt/python/current/app/quotations/migrations/

Вам, вероятно, нужно сделать что-то вроде:

subprocess.call(['chmod', '-R', '+w', '/opt/python/current/app/quotations/migrations/'])

Вам, вероятно, понадобится это до и / или после вызова makemigrations.

Пожалуйста, прокомментируйте, если у вас есть дополнительные проблемы.

Это похоже на простую ошибку прав доступа и может не иметь отношения к самой EBS. Сделать ls -al /opt/python/bundle/47/app/quotations/migrations/ и посмотреть, если 0036_dynamic_table.py уже существует. Если это так, удалите его, если нет, посмотрите разрешения на этом пути, чтобы убедиться, что у пользователя, который запускает миграцию, есть разрешения на запись и выполнение всех каталогов.

Теперь, когда я думаю об этом, скорее всего, вы не запускаете команды миграции как тот же пользователь, которому принадлежит структура каталогов. Взглянуть.

Другие вопросы по тегам