Django 单元测试故障转移域套接字
Posted
技术标签:
【中文标题】Django 单元测试故障转移域套接字【英文标题】:Django Unit tests fail over domain socket 【发布时间】:2020-02-05 20:48:06 【问题描述】:我已将 Django 配置为通过本地 Unix 域套接字使用具有对等身份验证的数据库,而不是用户/密码身份验证。 这是设置。数据库:
'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"
单元测试有何不同之处,请问我该如何解决?
【问题讨论】:
您是否检查过设置HOST
是否解决了问题?
另外,请检查:***.com/questions/8167602/…
【参考方案1】:
@Nader Alexan 没有要设置的主机,通信通过本地 Unix 域套接字进行。我尝试添加
'HOST': '/run/postgresql'
正如我在 pgAdmin 中必须做的那样,但这并没有解决问题。
事实证明,pytest 也尝试访问名为“postgres”的数据库,即使维护数据库设置为 template1。我无法确定原因,但在 pg_hba.conf 中明确添加对该数据库的访问权限使我能够运行测试。
对不起,如果这个解释有点不稳定,我自己是用户名/密码以外的 PG 身份验证形式的新手。
【讨论】:
以上是关于Django 单元测试故障转移域套接字的主要内容,如果未能解决你的问题,请参考以下文章