0

Ich habe jeden Leitfaden und Tutorial, bei der Einrichtung von RDS MySQL für meine Django App. Alles funktioniert gut lokal. Bei der Bereitstellung erhalte ich keine Fehler. Meine Website läuft. Aber wenn ich versuche, auf das restliche Framework zuzugreifen, das ich eingerichtet habe, oder ich versuche mich auf der Admin-Seite anzumelden, bekomme ich einen Programmierfehler, dass die Tabelle nicht existiert (keine der Tabellen existiert).Django App auf elastischen Bohnenstange mit MySQL RDS - Tabellen nie erstellt

Der Zugriff auf die Datenbank scheint nicht das Problem zu sein, alle meine RDS-Umgebungsvariablen sind eingerichtet, die Sicherheitsgruppe eingerichtet ist, etc. Ich kann sogar auf die Datenbank von meinem lokalen MySQL-Client zugreifen und ich kann Beachten Sie, dass die Datenbank keine Tabellen enthält.

Ich habe Befehle in meiner Konfigurationsdatei eingerichtet, um 'django-admin.py makemigrations' und 'django-admin.py migrate' auszuführen, ich habe sogar versucht, dies zu 'python manage.py ...' usw. zu ändern. scheint es, dass die Befehle nie funktionieren.

Wenn ich in meine Elastic Beanstalk Umgebung ssh bin, kann ich mysql mit 'mysql -u my_username' verwenden. Wenn ich jedoch zu dem Ordner navigiere, in dem sich meine App befindet, und versuche, 'python manage.py makemigrations' manuell auszuführen, bekomme ich Folgendes: django.db.utils.OperationalError: (1045, "Zugriff verweigert für Benutzer 'my_username' @ 'localhost' (mit Passwort: YES) ")

Hier ist meine Config ...

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 ons/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'], 
    } 
} 

Bitte helfen. Vielen Dank!

+0

Was ist 'os.environ [ 'RDS_USERNAME']' und 'os.environ ['RDS_HOSTNAME']' wie? Können Sie Dummy-Werte buchen? Wie wenn dein 'rds_username' 'jhon' ist und 'doe' heißt, wenn 'jhon @ localhost' post 'doe @ localhost' ist? –

+0

@MuhammadTahir die RDS-Umgebungsvariablen sind wie 'manoorsiddiqui' für Benutzername usw. Sie enthalten '@Localhost' in ihnen nicht. Hostname ist nur die URL, die vom RDS-Endpunkt bereitgestellt wird. Ich kann mich auch mit diesen Werten in der MySQL Workbench verbinden. –

+0

'" Zugriff verweigert für Benutzer 'my_username' @ 'localhost' (mit Passwort: JA) "' ist, was mich wundern lässt. Wenn es "Zugriff verweigert für Benutzer 'my_username' @ 'IP OF APPLICATION SERVER' (unter Verwendung des Passworts: YES)" 'wäre, dann würde es bedeuten, dass Sie username @ yourappserverip zu MySQL-Benutzern hinzufügen müssen. –

Antwort

0

Überprüfen Sie, ob die RDS-Sicherheitsgruppe in den EC2-Sicherheitsgruppen für Ihren elastischen Bohnenstall konfiguriert ist. Es sollte wie folgt aussehen:

EC2-Sicherheitsgruppen: your-rds-security-group-name, your-Elastic-Bohnenstange-Sicherheit-Gruppe

Verwandte Themen