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

Posted

技术标签:

【中文标题】Django + Heroku 的测试数据库。创建测试数据库时出错:创建数据库的权限被拒绝【英文标题】:Test database for Django + Heroku. Error creating the test database: permission denied to create database 【发布时间】:2022-01-16 21:16:02 【问题描述】:

我正在尝试为我的 Django 项目运行测试。我前段时间写了这个项目,当时我有不同的设置并且测试通过了。现在我更改了设置并使用 Heroku Postgres 数据库将其部署在 Heroku 上。一切正常,除了我无法运行测试。我尝试了许多不同的设置,但没有任何效果。大多数时候我收到此错误:创建数据库的权限被拒绝

我的最后一个设置是按照这个article on 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',
            
        
    

然后在我的 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

我也尝试了this article中的建议

您有什么想法可以解决这个错误吗?我不太了解姜戈。我经常玩它。

我正在使用:Python 3.6.9、Django 3.0.3、Heroku Postgresql 爱好开发

编辑:

我不确定这是否是我的设置数据库的问题。 现在,当我注释掉所有关于 DATABASES 的设置并运行 python manage.py runserver 时,我的开发服务器正常启动,并且我可以访问我之前设置的数据库(即使在重新启动计算机之后)。这看起来像实际设置没有效果(??)有什么想法吗?

Django version 3.0.3, using settings 'forumproject.settings'
Starting development server at http://127.0.0.1:8000/

【问题讨论】:

【参考方案1】:

好的,我知道它是什么了。我的数据库设置没有被考虑在内,即使我有 DEBUG=True 因为我在设置的末尾有这行:

# Activate Django-Heroku.
django_heroku.settings(locals())

注释掉这个错误permission denied to create database 消失,我可以运行测试

python manage.py test --keepdb

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

【讨论】:

以上是关于Django + Heroku 的测试数据库。创建测试数据库时出错:创建数据库的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Django 测试错误“创建数据库的权限被拒绝” - 使用 Heroku Postgres

创建 Heroku Django 应用程序后同步数据库的问题

Python / Django项目上的Heroku / Redis连接错误

Django,创建反应应用程序,Heroku

django makemigrations 和 heroku 服务器上的迁移不创建表

使用 Heroku 在 Django 中为本地开发配置 postgresql 数据库