Django+Heroku的测试数据库.创建测试数据库时出错:创建数据库的权限被拒绝



我正在尝试为我的Django项目运行测试。我前段时间写了这个项目,当时我有不同的设置,测试正在通过。现在我更改了设置,并将其部署在Heroku上的Heroku Postgres数据库中。除了我不能运行测试之外,一切都很好。我尝试了很多不同的设置,但都没有成功。大多数时候我都会遇到这样的错误:创建数据库的权限被拒绝

我的最后一个设置是按照这篇关于媒体的文章的说明基本上我已经添加了第二个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',
}
}
}

然后在我的venv中运行python manage.py test --keepdb。然后我得到一个错误:

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

我也尝试了这篇文章中建议的

你知道我能为这个错误做些什么吗?我不太了解姜戈。我不时地玩它。

我使用的是:Python 3.6.9,Django 3.0.3,Heroku Postgresql Hobby Dev

编辑:

我不确定这是否是我的设置数据库的问题。现在,当我注释掉所有关于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

我很惊讶总是在堆栈溢出上发布一个问题能帮助我立即找到答案。我在里兜圈子

最新更新