Тестовая база данных для Django + Heroku. Ошибка при создании тестовой базы данных: отказано в разрешении на создание базы данных
Я пытаюсь запустить тесты для моего проекта Django. Я написал этот проект некоторое время назад, тогда у меня были другие настройки и тесты проходили. Сейчас я изменил настройки и развернул его на Heroku с базой данных Heroku Postgres. Все работает отлично, за исключением того, что я не могу запустить тесты. Я перепробовал много разных настроек, но ничего не помогло. В большинстве случаев я получаю эту ошибку: permission denied to create database
Моя последняя настройка соответствует инструкции из этой статьи на Medium. В основном я добавил вторую базу данных Heroku Postgres, добавьте настройки, как показано ниже (но с действительными переменными моих баз данных heroku):
if 'test' in sys.argv:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'd7osdssadag0ugv5',
'USER': 'lhwwasadqlgjra',
'PASSWORD': '1524f48a2ce41177c4ssdadasd3a11680b735302d14979d312ff36',
'HOST': 'ec2-54-75-2326-118.eu-west-1.compute.amazonaws.com',
'PORT': 5432,
'TEST': {
'NAME': 'd7osdssadag0ugv5',
}
}
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'd7hasadas9hqts5',
'USER': 'nybkduadsdgqot',
'PASSWORD': 'bb535b9cdsfsdfdsfdsfac54851f267444dd8cc230b2a786ab9f446',
'HOST': 'ec2-54-247-132-38.eu-west-1.compute.amazonaws.com',
'PORT': 5432,
'TEST': {
'NAME': 'd7hasadas9hqts5',
}
}
}
Затем запустите python manage.py test --keepdb
в моем venv. Затем я получаю ошибку:
RuntimeWarning: Normally Django will use a connection to the 'postgres' database to avoid running initialization queries against the production database when it's not needed (for example, when running tests). Django was unable to create a connection to the 'postgres' database and will use the first PostgreSQL database instead.
RuntimeWarning
Got an error creating the test database: permission denied to create database
Я также попробовал то, что советуется в этой статье
Есть ли у вас идеи, что я могу сделать с этой ошибкой? Я не очень хорошо знаю Django. Я играю с ним время от времени.
Я использую: Python 3.6.9, Django 3.0.3, Heroku Postgresql Hobby Dev
РЕДАКТИРОВАНИЕ:
Я не уверен, что это проблема с моими настройками DATABASES.
Теперь, когда я закомментировал все мои настройки относительно DATABASES и запустил python manage.py runserver
мой сервер разработки запускается как обычно и у меня есть доступ к базе данных, которую я установил ранее (даже после перезагрузки компьютера). Это похоже на то, что фактические настройки не имеют эффекта (??) Любые мысли?
Django version 3.0.3, using settings 'forumproject.settings'
Starting development server at http://127.0.0.1:8000/
Ок, я выяснил, в чем дело. Настройки моей базы данных не учитывались, даже у меня было DEBUG=True, потому что у меня была эта строка в конце настроек:
# Activate Django-Heroku.
django_heroku.settings(locals())
После того, как я закомментировал это, ошибка permission denied to create database
исчезла, и я могу запускать тесты с
python manage.py test --keepdb
Удивительно, как всегда размещение вопроса на stack overflow помогает мне сразу же найти ответ. Я бегал кругами