Я следил за каждым руководством и учебным пособием по настройке RDS MySQL для моего приложения Django. Все работает нормально. Когда я развертываю, я не получаю ошибок. Мой сайт работает. Но когда я пытаюсь получить доступ к остальной структуре, которую я установил, или я пытаюсь войти на страницу администратора, я получаю ProgrammingError, что таблица не существует (ни одна из таблиц не существует).Приложение Django, развернутое на эластичном beanstalk с MySQL RDS - таблицы никогда не создаются
Доступ к базе данных, похоже, не является проблемой, все переменные среды RDS настроены, настроена группа безопасности и т. Д. Я даже могу получить доступ к базе данных из моего локального клиента mysql, и я могу что в базе данных нет таблиц.
У меня есть команды, настроенные в моем файле конфигурации для запуска 'django-admin.py makemigrations' и 'django-admin.py migrate', я даже попытался изменить это на 'python manage.py ...' и т. Д. , кажется, что команды никогда не работают.
Когда я схожу в свою эластичную среду beanstalk, я могу войти в mysql, используя «mysql -u my_username». Однако, если я перейду в папку, где находится мое приложение, и попытаюсь запустить «python manage.py makemigrations» вручную, я получаю это: django.db.utils.OperationalError: (1045, «Доступ запрещен для пользователя« my_username »@ 'локальный' (используя пароль: ДА) ")
Вот мой конфиг ...
requirements.txt
virtualenv==15.0.1
Django==1.9.5
django-compressor==2.0
django-model-utils==2.4
djangorestframework==3.3.2
dj-database-url==0.4.0
gunicorn==19.4.5
MySQL-python==1.2.5
jsonfield==1.0.3
.ebextentions/01_packages.config
packages:
yum:
git: []
gcc: []
mysql: []
mysql-devel: []
python-devel: []
. ebextenti Дополнения/project.config
container_commands:
01_makemigrations:
command: "source /opt/python/run/venv/bin/activate && python manage.py makemigrations --noinput"
leader_only: true
02_migrate:
command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput"
leader_only: true
03_createsu:
command: "source /opt/python/run/venv/bin/activate && python manage.py createsu"
leader_only: true
04_collectstatic:
command: "source /opt/python/run/venv/bin/activate && python manage.py collectstatic --noinput"
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ['RDS_DB_NAME'],
'USER': os.environ['RDS_USERNAME'],
'PASSWORD': os.environ['RDS_PASSWORD'],
'HOST': os.environ['RDS_HOSTNAME'],
'PORT': os.environ['RDS_PORT'],
}
}
Пожалуйста, помогите. Спасибо!
Что такое 'os.environ [ 'RDS_USERNAME']' и 'os.environ ['RDS_HOSTNAME']' нравится? Можете ли вы опубликовать фиктивные значения? Например, если ваш 'rds_username' является 'jhon' post 'doe', если это 'jhon @ localhost' сообщение 'doe @ localhost'? –
@MuhammadTahir Переменные среды RDS похожи на «mansoorsiddiqui» для имени пользователя и т. Д. Они не содержат в них «@Localhost». Имя хоста - это только URL-адрес, предоставленный конечной точкой RDS. Я также могу подключиться, используя эти значения, в MySQL workbench. –
'' Доступ запрещен для пользователя 'my_username' @ 'localhost' (с использованием пароля: YES). «Это заставляет меня задуматься. Если это было «Доступ запрещен для пользователя« my_username »@« IP OF APPLICATION SERVER »(с использованием пароля: YES)», то это означало бы, что вам нужно добавить имя пользователя @ yourappserverip для пользователей MySQL. –