运行“manage.py test”时请求数据库密码
当我尝试运行
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设置相同的配置。