unable to make RDS queries on heroku

懵懂的女人 提交于 2019-12-22 10:04:33

问题


I can access my RDS postresql database on a local machine no problem.

settings.py

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'xxxxxxx',
    'USER': 'XXXXXXXX',
    'PASSWORD': 'XXXXXXXX',
    'HOST': 'XXXXXXrds.amazonaws.com',
    'PORT': '5432',
}

I pushed this to Heroku and I get a ProgrammingError at /saferdb/query/

In manage.py shell on heroku I tried to access the database:

>>> from saferdb.models import Question
>>> q = Question.objects.all()
>>> q.count()

got the following error:

Traceback (most recent call last):
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
psycopg2.ProgrammingError: relation "saferdb_question" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "saferdb_question"
                                          ^


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/query.py", line 387, in count
    return self.query.get_count(using=self.db)
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/sql/query.py", line 491, in get_count
    number = obj.get_aggregation(using, ['__count'])['__count']
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/sql/query.py", line 476, in get_aggregation
    result = compiler.execute_sql(SINGLE)
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1063, in execute_sql
    cursor.execute(sql, params)
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py", line 100, in execute
    return super().execute(sql, params)
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py", line 68, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "saferdb_question" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "saferdb_question"
                                          ^

回答1:


I had a similar issue, also for a Django on Heroku app. I used the heroku-django-template to create my app. In settings.py, the default database is overwritten by the environment variable DATABASE_URL.

You can either disable that in the settings.py or set the env var to the correct value.




回答2:


The Error is because of table doesn't exists in Database, that means you need to migrate the database models. For Further reference read django migrations here

Database migrations in heroku is done by this way, specify the line in Procfile file.

release: python manage.py migrate
web: gunicorn col.wsgi --log-file -

So Whenever you deploy a new code, heroku will automatically migrate the DB models. For further reference, check here. let me know if this works.



来源:https://stackoverflow.com/questions/48514008/unable-to-make-rds-queries-on-heroku

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!