0

Django uygulamasında RDS MySQL'i kurmak için her kılavuzu ve öğreticiyi takip ettim. Her şey yerel olarak iyi çalışıyor. Konuştuğumda hata alamıyorum. Web sitem çalışır. Ancak, kurduğum çerçeveye erişmeye çalıştığımda, kurulumum var ya da yönetici sayfasına giriş yapmayı denediğimde, bir ProgrammingError dosyası alıyorum, tablonun var olmadığını (tabloların hiçbiri mevcut değil).MySQL RDS ile elastik beanstalk dağıtılan Django uygulaması - tablolar asla oluşturulmuyor

Veritabanına erişim problem gibi görünmüyor, tüm RDS ortam değişkenlerim ayarlanmış, güvenlik grubu kuruldu, vb. Veritabanına yerel mysql istemcimden bile erişebiliyorum ve Veritabanında hiç tablo yok.

'django-admin.py makemigrations' ve 'django-admin.py migrate' komutlarını çalıştırmak için config dosyasımda ayarlanmış komutlarım var, bunu 'python manage.py ...' vb. Komutlar asla işe yaramaz gibi görünüyor.

Elastik fasulyem ortamıma girdiğimde, mysql dosyasını 'mysql -u my_username' kullanarak alabilirim. Ancak, uygulamamın olduğu klasöre gidip 'python manage.py makemigrations' komutunu manuel olarak çalıştırmayı denediğimde, şunu elde ederim: django.db.utils.OperationalError: (1045, "Kullanıcı 'my_username' için erişim reddedildi" @ 'localhost' (şifre kullanarak: EVET) ") İşte

benim yapılandırma olduğunu ...

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

yardım edin. Teşekkür ederim! RDS güvenlik grubunun elastik fasulyeniz için EC2 güvenlik gruplarında yapılandırılmış olup olmadığını kontrol edin.

+0

'os.environ nedir [ 'RDS_USERNAME']' ve 'os.environ ['RDS_HOSTNAME'] gibi? Sahte değerler gönderebilir misin? Eğer 'jhon @ localhost' post 'doe @ localhost' ise 'rds_username' 'jhon' post 'doe' iseniz? –

+0

@MuhammadTahir RDS ortam değişkenleri, kullanıcı adı için 'mansoorsiddiqui' gibidir ve bunlarda '@Localhost' içermezler. Ana bilgisayar adı sadece RDS bitiş noktası tarafından sağlanan URL'dir. Bu değerleri MySQL çalışma tezgahına da bağlayabilirim. –

+0

'" Kullanıcı için erişim reddedildi 'my_username' @ 'localhost' (parola kullanarak: YES) "' beni şaşırtan şeydir. Eğer '' Kullanıcı için erişim reddedildi '' my_username '@' 'UYGULAMA SUNUCUSU IP' (şifre: EVET) ''ise, kullanıcı adı @ yourappserverip'i MySQL kullanıcılarına eklemeniz gerektiği anlamına gelirdi. –

cevap

0

Bu gibi görünmelidir:

EC2 güvenlik grupları: En-rds-güvenlik-grup-adı, your-Elastik-Beanstalk-Güvenlik-Grup

İlgili konular