我将Django配置为在本地Unix域套接字上使用具有对等身份验证的数据库,而不是使用用户/密码身份验证。下面是settings.DATABASES:
{'default': {'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mcps',
'PORT': 5433,
'TEST': {'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mytestdb',
'PORT': 5433,
'USER': 'mcp'},
'USER': 'mcp'}
}端口配置正确,应用程序本身正常工作没有问题。
然而,当我尝试运行pytest时,将环境变量DJANGO_SETTINGS_MODULE设置为上述设置,创建了一个数据库-具有正确的所有者'mcp‘-但在创建表之前,我得到一个错误:
django.db.utils.OperationalError: FATAL: Peer authentication failed for user "mcp"单元测试有什么不同之处,我该如何解决这个问题?
发布于 2019-10-10 18:31:23
@Nader Alexan没有要设置的主机,通信通过本地Unix域套接字进行。我试着添加
'HOST': '/run/postgresql'就像我在pgAdmin中不得不做的那样,但这并没有解决问题。
事实证明,即使维护数据库被设置为template1,pytest也会尝试访问名为“postgres”的数据库。我还不能确定原因,但是在pg_hba.conf中显式地添加对该数据库的访问使我能够运行测试。
抱歉,如果这个解释有点站不住脚,我自己对除了用户名/密码之外的PG身份验证的形式是新的。
https://stackoverflow.com/questions/58288486
复制相似问题