运行“manage.py test”时请求数据库密码

2 投票
2 回答
963 浏览
提问于 2025-04-15 18:09

当我尝试运行

manage.py test

时,出现了一个数据库密码提示。

之前,测试可以在不手动输入数据库密码的情况下运行。最近我把数据库更新到了postgres 8.4。我想这可能是我忘记了某个设置。

我该如何配置,让测试运行时不询问密码呢?

附加信息

我用用户'postgres'创建了数据库,但在django中用用户'postgis'访问。我检查了这两个用户的权限,它们是一样的。

在运行测试时,数据库和表都能正常创建(没有请求密码)。只有在安装'自定义SQL'时,才会请求密码。

解决方案

正如Carl指出的,~/.pgpass文件 [*nix] 和 %APPDATA%\postgresql\pgpass.conf(其中 %APPDATA% 指的是用户个人资料中的应用数据子目录)[windows] 允许你配置数据库,这样每次就不需要输入密码了。

可以查看postgres的文档:密码文件

我检查了我的配置,发现这个文件是自动创建的。我更新了我的密码文件,现在django测试在每次安装自定义SQL时都不需要手动输入密码了。

2 个回答

0

我想这可能是我忘记的某个设置。

我不是想让你觉得自己傻,但有时候简单的解决办法会被忽视:你在你的settings.py文件里设置了DATABASE_PASSWORD这个选项吗?

1

Django的测试会使用一个不同的数据库,它的名字是在你的数据库名称后面加上“_test”。我猜可能是你在Postgres的认证配置中(要么是在pg_hba.conf文件里,要么是在~/.pgpass文件里),允许了对DATABASE_NAME这个数据库的无密码访问,但你没有为DATABASE_NAME_test设置相同的配置。

撰写回答