【发布时间】:2020-11-26 07:51:33
【问题描述】:
我有一个本地运行的 Django 3.0.8 项目,连接到本地 PostgreSQL 数据库 (postgres:///myapp)。当我运行python manage.py test 时,我的单元测试运行良好;一个名为test_myapp 的测试数据库会自动创建,并且可以正确访问。
但是,当我运行python manage.py test --parallel 8 时,测试失败了。我看到正确生成了 8 个克隆数据库(test_myapp_1、test_myapp_2、...、test_myapp_8),但我收到如下错误:
psycopg2.OperationalError: FATAL: database "myapp_3" does not exist
似乎对于并行测试,数据库访问不正确(尝试访问数据库myapp_N 而不是test_myapp_N)。我试图弄清楚我的本地配置是否有问题,但这就是我的基本配置中的全部内容:
DATABASES = {
'default': env.db('DATABASE_URL', default='postgres:///myapp'),
}
DATABASES['default']['ATOMIC_REQUESTS'] = True
为什么我的并行测试进程没有正确访问它们各自克隆的测试数据库?
【问题讨论】:
-
您能否分享更多关于您如何配置数据库的信息?
from django.conf import settings;print(settings.DATABASES) -
@AmirHeshmati 这里是
print(settings.DATABASES)的结果: -
{ "default":{ "NAME":"skale", "USER":"", "PASSWORD":"", "HOST":"", "PORT":"", "ENGINE":"django.db.backends.postgresql", "ATOMIC_REQUESTS":True, "AUTOCOMMIT":True, "CONN_MAX_AGE":0, "OPTIONS":{ "fallback_application_name":"django_shell" }, "TIME_ZONE": “无”,“测试”:{“CHARSET”:“无”,“COLLATION”:“无”,“名称”:“无”,“镜子”:“无”} } }
-
我遇到了同样的问题。有什么建议吗?