Django 单元测试故障转移域套接字
Django Unit tests fail over domain socket
我将 Django 配置为通过本地 Unix 域套接字使用具有对等身份验证的数据库,而不是 user/password 身份验证。
这是 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"
单元测试有哪些不同之处,我该如何解决这个问题?
@Nader Alexan 没有要设置的主机,通信通过本地 Unix 域套接字进行。我尝试添加
'HOST': '/run/postgresql'
正如我在 pgAdmin 中所做的那样,但这并没有解决问题。
事实证明,pytest 也尝试访问名为 'postgres' 的数据库,即使维护数据库设置为 template1。我无法确定原因,但在 pg_hba.conf 中明确添加对该数据库的访问权限使我能够 运行 测试。
抱歉,如果这个解释有点站不住脚,除了 username/password 我自己之外,我对 PG 身份验证形式还很陌生。
我将 Django 配置为通过本地 Unix 域套接字使用具有对等身份验证的数据库,而不是 user/password 身份验证。 这是 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"
单元测试有哪些不同之处,我该如何解决这个问题?
@Nader Alexan 没有要设置的主机,通信通过本地 Unix 域套接字进行。我尝试添加
'HOST': '/run/postgresql'
正如我在 pgAdmin 中所做的那样,但这并没有解决问题。
事实证明,pytest 也尝试访问名为 'postgres' 的数据库,即使维护数据库设置为 template1。我无法确定原因,但在 pg_hba.conf 中明确添加对该数据库的访问权限使我能够 运行 测试。
抱歉,如果这个解释有点站不住脚,除了 username/password 我自己之外,我对 PG 身份验证形式还很陌生。